In meinem AbstractProcessor
Ich bin in der Lage zu bekommen alle Methoden aus einer Klasse mit einiger Anmerkung kommentiert zu bekommen, die ich geschaffen habe:Wie Methode Körper von ExecutableElement
List<? extends Element> allElements = processingEnv.getElementUtils().getAllMembers((TypeElement) bean);
List<ExecutableElement> methods = ElementFilter.methodsIn(allElements);
möglich ist, den Körper des Verfahrens zu erhalten/ExecutableElement
? Die API scheint sich nur mit der Signatur und den Modifikatoren zu befassen.
ich wahrscheinlich eine Variante dieser Antwort verwenden könnte. https://stackoverflow.com/a/34568708/6095334, den Zugriff auf Klassen aus dem proprietären * .sun ** Paket, wie com.sun.tools.javac.tree.JCTree$MethodTree
:
MethodTree methodTree = trees.getTree(executableElement);
wo trees
eine Instanz com.sun.source.util.Trees
Satz ist in Die init() -Methode des AbstractProcessors als so: trees = Trees.instance(processingEnv);
Aber diese Klassen kommen mit einer Warnung: Dies ist nicht Teil einer unterstützten API. Wenn Sie Code schreiben, der davon abhängt, tun Sie dies auf eigenes Risiko. Dieser Code und seine internen Schnittstellen können ohne vorherige Ankündigung geändert oder gelöscht werden.
Ich hoffe, dass es möglich war, auf den Körper einer annotierten Methode aus dem allgemeineren Framework für die Annotationsverarbeitung zuzugreifen.