代码之家  ›  专栏  ›  技术社区  ›  Dean Xu

在批注处理环境中获取静态初始值设定项

  •  2
  • Dean Xu  · 技术社区  · 6 年前

    这是javadoc javax.lang.model.element.ExecutableElement.getSimpleName()

    返回构造函数、方法或初始值设定项的简单名称。为了 一个构造函数,返回名称“init”, 对于静电 初始化器,返回名称“clinit” ,对于一个匿名者 类或实例初始值设定项,返回空名称。

    注意粗体部分说 for a static initalizer ,它意味着 ExecutableElement 可以表示 static initalizer .

    那么如何在注释处理环境中获得静态初始化器呢?此外,这是否意味着我们可以在静态块上添加注释(尽管在java8之前我们不能)?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ondřej Fischer    6 年前

    不能对静态初始化程序进行批注。但你仍然可以访问它。

    表示中的所有元素都可用,无论您如何访问它。

    例如,如果您注释一个包含静态初始值设定项的类,您将得到 TypeElement 表示,您可以使用 getEnclosedElements() .

    在循环中,您可以测试元素的类型。 对于静态初始值设定项使用:

    element.getKind() == ElementKind.STATIC_INIT
    

    例如初始化器使用

    element.getKind() == ElementKind.INSTANCE_INIT
    

    现在一个重要的问题是,你到底需要实现什么。如何使用初始值设定项。

    如果在注释处理期间访问它,您可能会发现,有一个初始值设定项,但仅此而已。例如,身体代表不可用。

    如果要检查初始值设定项的主体,必须使用Java8中引入的编译器插件API,使用 TaskListener .