我正在编写一个需要访问仅存在于匿名类中的元素的注释处理器。具体来说,访问枚举匿名类中的方法。
enum Foo {
BAR {
@MyAnnotation
void doSomething() { [...] }
};
@MyAnnotation
void doSomethingElse() { [...] }
}
在注释过程中调用roundEnv.getElementsAnnotatedWith(MyAnnotation.class)
时,我没有得到表示doSomething
方法的元素。但是,我会得到一个表示doSomethingElse
方法的元素,因此它似乎特定于匿名类。我已经在匿名枚举类中对字段注释进行了相同的观察。
我错过了什么?是否不支持这种处理?
答案 0 :(得分:3)
不,这不受支持。
在Java中,编译器必须告诉它的仅信息,该对象的可用方法是该对象的编译时类型。如果某个方法在已知类型的对象上不可用,则就编译器而言它是不可用的。