私は Kotlin の注釈プロセッサに取り組んでおり、処理された要素は Java にあるため、?
代わりに@Nullable
注釈を使用して nullables を受け取ることはありません。それで問題ありませんが、型や高次関数で null パラメータを受け取るという問題に直面しています。 、通常のパラメーターの場合。
var someNullField: String? = ""
私はその注釈java.lang.String
でプロセスで受け取ります。@org.jetbrains.annotations.Nullable
しかしList<String?>
、たとえばjava.util.List<java.lang.String>
、タイプ引数ではなくメイン要素にない注釈なしで私を返します。これにより、不明な null 許容状態が発生します。
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()}")
}
}
すべての助けをいただければ幸いです。