这里是javax.lang.model.element.ExecutableElement.getSimpleName()
的Javadoc
返回构造函数,方法或初始化程序的简单名称。对于 构造函数,返回名称“ init”,为静态 初始化程序,将返回名称“ clinit” ,对于匿名用户 类或实例初始值设定项,则返回一个空名称。
请注意,粗体部分表示for a static initalizer
,这意味着ExecutableElement
可以代表static initalizer
。
那么如何在注释处理环境中获得静态初始化器?此外,这是否意味着我们可以在静态块上添加注释(尽管直到Java8才能添加注释)?
答案 0 :(得分:1)
您不能注释静态初始化程序。但是您仍然可以访问它。
无论您如何访问,表示中的所有元素都可用。
例如如果注释包含静态初始值设定项的类,则将获得它的TypeElement
表示形式,并且可以使用getEnclosedElements()
获得所有字段,方法,构造函数和初始值设定项。
在循环中,您可以测试元素的种类。 对于静态初始化程序,请使用:
element.getKind() == ElementKind.STATIC_INIT
用于实例初始化程序
element.getKind() == ElementKind.INSTANCE_INIT
现在一个重要的问题是,您到底需要实现什么。如何使用初始化程序。
如果在批注处理期间访问它,则可能会发现有一个初始化程序,但仅此而已。例如。身体表示不可用。
如果要检查初始化程序的主体,则必须使用Java 8中引入的编译器插件API,使用TaskListener
。