在我的帮助下,AbstractProcessor
我可以从带有某些注释的类中获取所有方法,我创建了:
List<? extends Element> allElements = processingEnv.getElementUtils().getAllMembers((TypeElement) bean);
List<ExecutableElement> methods = ElementFilter.methodsIn(allElements);
Run Code Online (Sandbox Code Playgroud)
是否可以获取方法的主体ExecutableElement
?该API似乎只处理签名和修饰符。
我可能会使用以下答案的一些变体:https : //stackoverflow.com/a/34568708/6095334,以从专有* .sun。**包访问类,例如com.sun.tools.javac.tree.JCTree$MethodTree
:
MethodTree methodTree = trees.getTree(executableElement);
Run Code Online (Sandbox Code Playgroud)
这样,AbstractProcessor的init()方法trees
中com.sun.source.util.Trees
set 的实例在哪里:trees = Trees.instance(processingEnv);
但是这些类带有警告:这不是任何受支持的API的一部分。如果编写依赖于此的代码,则后果自负。该代码及其内部接口如有更改或删除,恕不另行通知。
我希望可以从更通用的注释处理框架中访问带注释的方法的主体。