我正在为 Kotlin 开发注释处理器,因为处理的元素是在 Java 中,所以我没有收到可空值,?
而是使用@Nullable
注释,这很好,但是我在接收类型和高阶函数中的空参数时遇到了问题, 对于正常参数。
var someNullField: String? = ""
我将在其注释中收到java.lang.String
处理过程。@org.jetbrains.annotations.Nullable
但是List<String?>
例如将返回我java.util.List<java.lang.String>
而不在主元素中而不在类型参数中没有任何注释,这会导致未知的可空性状态
我试图用javax.lang.model.util.Types
找到某种结果,但什么也没有。
我现在使用的一些代码:
val utils = processingEnvironment.typeUtils
val type = fieldElement.asType()
if (type is DeclaredType) {
val typeElement = utils.asElement(type)
type.typeArguments
.forEach {
//Trying different ways and just printing for possible results
val capture = utils.capture(it)
val erasure = utils.erasure(it)
val element = utils.asElement(it)
printMessage("element: $element isNullable: ${element.isNullable()} isNotNull: ${element.isNotNull()}\ncapture: $capture isNullable: ${capture.isNullable()} isNotNull: ${capture.isNotNull()}\nerasure: $erasure isNullable: ${erasure.isNullable()} isNotNull: ${erasure.isNotNull()}")
}
}
所有帮助将不胜感激。