【发布时间】:2018-08-01 08:34:47
【问题描述】:
这是来自javax.lang.model.element.ExecutableElement.getSimpleName()的javadoc
返回构造函数、方法或初始化程序的简单名称。为了 构造函数,返回名称“init”,对于静态 初始化器,返回名称“clinit”,并且对于匿名 类或实例初始化器,则返回一个空名称。
注意粗体部分是for a static initalizer,这意味着ExecutableElement可以代表static initalizer。
那么如何在注解处理环境中获取静态初始化器呢?此外,这是否意味着我们可以在静态块上添加注解(尽管在 java8 之前我们不能)?
【问题讨论】:
-
IIUC,静态初始化器可能是ExecutableElement,但不是方法;因此您不能附加注释。
-
@daniu 是的,但我怎样才能获得任何静态拦截器?
-
@DeanXu 我不熟悉注解处理 API,但是如果你有一些本地类,或者只是在静态块中带有注解的变量呢?也许然后有一些方法可以获取声明本地类/变量的位置,就像普通方法中的本地类一样。 (类似于普通反射的getEnclosureMethod,但不支持cinit方法)
标签: java annotations annotation-processing