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

Retrieve elements within anonymous class using annotation processing

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

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

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

在注释过程中调用 roundEnv.getElementsAnnotatedWith(MyAnnotation.class) 时,我没有得到表示 doSomething 方法的元素。但是,我确实获得了一个代表 doSomethingElse 方法的元素,因此它似乎特定于匿名 classes。我在匿名枚举 class.

中也观察到了相同的字段注释

我错过了什么?只是不支持这种处理方式吗?

不,这不受支持。

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