Dans le traitement des annotations, la classe à traiter ne peut être gérée que par Element et TypeMirror, et ne peut pas être gérée en tant que classe. Par conséquent, lors de la comparaison avec une classe qui n'est pas la cible de traitement (par exemple pour déterminer si la classe cible hérite d'une classe spécifique), il est nécessaire d'obtenir TypeElement ou TypeMirror à partir de Class. Si vous pouvez obtenir TypeElement, vous pouvez obtenir TypeMirror avec ʻElement # asType () `, donc si vous pouvez obtenir TypeElement depuis Class, cela sera résolu.
La méthode à utiliser est java.lang.model.util.Elements # getTypeElement (CharSequence name)
java.lang.model.util.Elements
est une interface.
Vous pouvez obtenir une instance avec ProcessingEnvironment # getElementUtils ()
.
Par conséquent, il doit être obtenu en faisant référence à processingEnv dans la classe qui hérite de AbstractProcessor.
Donc, le code ressemble à ceci:
À propos, Java est Java 8.
ExampleProcessor.java
Elements elementUtils = processingEnv.getElementUtils()
TypeElement element = elementUtils.getTypeElement("java.lang.String")
ExampleProcessor.kt
val elementUtils = processingEnv.elementUtils
val element = elementUtils.getTypeElement("java.lang.String")
L'élément est maintenant un TypeElement de la classe java.lang.String
.
Recommended Posts