标识符引用中丢失了有关变量/字段/参数类型的Java注释,这为什么呢?

时间:2019-03-12 05:37:02

标签: java annotations

以下示例说明了基本问题。

public class MyClass {
  private @Foo MyClass _myClass;

  public void test() {
    // the type information for the `_myClass` reference does not include the `@Foo` annotation 
    Object obj = _myClass;
  }
}

使用注释处理器或编译器插件,您可以在_myClass变量声明中检查Object obj = _myClass初始化程序的类型。

具体来说,与JCTree.JCIdent#type引用相对应的_myClass字段在元数据中没有@Foo注释。这似乎是编译器中的一个普遍问题-在表达式的属性分配等过程中,所有注释元数据都会丢失。这会阻止整个类的功能本来可以与注释一起使用。

或者,也许我缺少明显的东西?

我宁愿将此作为功能请求记录在JDK Bug tracker上,但这是一个封闭的系统:(

我希望该项目的某个人可能潜伏在这里,并可以提供更多信息。

0 个答案:

没有答案