In der Anmerkungsverarbeitung kann die zu verarbeitende Klasse nur von Element und TypeMirror und nicht als Klasse behandelt werden.
Wenn Sie mit einer Klasse vergleichen, die nicht das Verarbeitungsziel ist (z. B. um festzustellen, ob die Zielklasse eine bestimmte Klasse erbt), müssen Sie daher TypeElement oder TypeMirror von Class abrufen.
Wenn Sie TypeElement erhalten können, können Sie TypeMirror mit Element # asType ()
erhalten. Wenn Sie also TypeElement von Class erhalten können, wird es gelöst.
Die zu verwendende Methode ist "java.lang.model.util.Elements # getTypeElement (CharSequence name)"
java.lang.model.util.Elements
ist eine Schnittstelle.
Sie können eine Instanz mit ProcessingEnvironment # getElementUtils ()
abrufen.
Daher sollte es unter Bezugnahme auf processingEnv in der Klasse abgerufen werden, die AbstractProcessor erbt.
Der Code sieht also so aus:
Java ist übrigens 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")
Das Element ist jetzt ein TypeElement der Klasse "java.lang.String".
Recommended Posts