Wie man den Methodenrumpf von ExecutableElement erhält

In meinemAbstractProcessor Ich kann alle Methoden aus einer Klasse abrufen, die mit einer Anmerkung versehen ist, die ich erstellt habe:

List<? extends Element> allElements = processingEnv.getElementUtils().getAllMembers((TypeElement) bean);
List<ExecutableElement> methods = ElementFilter.methodsIn(allElements);

Is ist möglich, den Rumpf der Methode / @ zu erhaltExecutableElement? Die API scheint nur mit der Signatur und den Modifikatoren umzugehen.

Ich könnte wahrscheinlich eine Variation dieser Antwort gebrauchen:https: //stackoverflow.com/a/34568708/609533, um auf Klassen aus dem proprietären Paket * .sun. ** zuzugreifen, z. B.com.sun.tools.javac.tree.JCTree$MethodTree:

MethodTree methodTree = trees.getTree(executableElement);

wotrees ist eine Instanz voncom.sun.source.util.Trees in der init () -Methode des AbstractProcessors wie folgt festlegen:trees = Trees.instance(processingEnv);
Aber diese Klassen kommen mit einer Warnung:Dies ist NICHT Teil einer unterstützten API. Wenn Sie davon abhängigen Code schreiben, geschieht 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, innerhalb des allgemeineren Annotation-Processing-Frameworks auf den Body einer annotierten Methode zuzugreifen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage