使用注释处理检索匿名类中的元素

时间:2016-03-04 17:29:51

标签: java annotation-processing

我正在编写一个需要访问仅存在于匿名类中的元素的注释处理器。具体来说,访问枚举匿名类中的方法。

enum Foo {
    BAR {
        @MyAnnotation
        void doSomething() { [...] }
    };

    @MyAnnotation
    void doSomethingElse() { [...] }
}

在注释过程中调用roundEnv.getElementsAnnotatedWith(MyAnnotation.class)时,我没有得到表示doSomething方法的元素。但是,我会得到一个表示doSomethingElse方法的元素,因此它似乎特定于匿名类。我已经在匿名枚举类中对字段注释进行了相同的观察。

我错过了什么?是否不支持这种处理?

1 个答案:

答案 0 :(得分:3)

不,这不受支持。

在Java中,编译器必须告诉它的信息,该对象的可用方法是该对象的编译时类型。如果某个方法在已知类型的对象上不可用,则就编译器而言它是不可用的。