在注释处理环境中获取静态初始值设定项
Get static initializer in annotation processing environment
这是来自 javax.lang.model.element.ExecutableElement.getSimpleName()
的 javadoc
Returns the simple name of a constructor, method, or initializer. For
a constructor, the name "init" is returned, for a static
initializer, the name "clinit" is returned, and for an anonymous
class or instance initializer, an empty name is returned.
注意粗体部分说 for a static initalizer
,这意味着 ExecutableElement
可以表示 static initalizer
。
那么如何在注解处理环境中获取静态初始化器呢?此外,这是否意味着我们可以在静态块上添加注释(尽管我们不能直到 java8)?
您不能注释静态初始值设定项。但您仍然可以访问它。
表示中的所有元素都可用,无论您如何访问它。
例如如果你注释一个 class,包含静态初始值设定项,你将得到它的 TypeElement
表示,你可以使用 getEnclosedElements()
.
获得所有字段、方法、构造函数和初始值设定项
在循环中你可以测试元素的种类。
对于静态初始化程序使用:
element.getKind() == ElementKind.STATIC_INIT
例如初始化程序使用
element.getKind() == ElementKind.INSTANCE_INIT
现在一个重要的问题是,你究竟需要达到什么目的。如何使用初始化器。
如果您在注释处理期间访问它,您可能会发现有一个初始化程序,但仅此而已。例如。 body 表示不可用。
如果你想检查初始化器的 body,你必须使用 Java 8 中引入的编译器插件 API,使用 TaskListener
.
这是来自 javax.lang.model.element.ExecutableElement.getSimpleName()
Returns the simple name of a constructor, method, or initializer. For a constructor, the name "init" is returned, for a static initializer, the name "clinit" is returned, and for an anonymous class or instance initializer, an empty name is returned.
注意粗体部分说 for a static initalizer
,这意味着 ExecutableElement
可以表示 static initalizer
。
那么如何在注解处理环境中获取静态初始化器呢?此外,这是否意味着我们可以在静态块上添加注释(尽管我们不能直到 java8)?
您不能注释静态初始值设定项。但您仍然可以访问它。
表示中的所有元素都可用,无论您如何访问它。
例如如果你注释一个 class,包含静态初始值设定项,你将得到它的 TypeElement
表示,你可以使用 getEnclosedElements()
.
在循环中你可以测试元素的种类。 对于静态初始化程序使用:
element.getKind() == ElementKind.STATIC_INIT
例如初始化程序使用
element.getKind() == ElementKind.INSTANCE_INIT
现在一个重要的问题是,你究竟需要达到什么目的。如何使用初始化器。
如果您在注释处理期间访问它,您可能会发现有一个初始化程序,但仅此而已。例如。 body 表示不可用。
如果你想检查初始化器的 body,你必须使用 Java 8 中引入的编译器插件 API,使用 TaskListener
.