我正在研究Java(javax)注解处理。
假设我有一个用于方法的注解:
现在,我想处理所有从带注释方法的类型中重写的方法:
我怎样才能访问
我猜需要找到封闭类的子类,但是我还没有找到一个方法来实现这一点。
更新:我认为可以使用
假设我有一个用于方法的注解:
@Target(ElementType.METHOD)
public @interface MethodAnnotation { }
现在,我想处理所有从带注释方法的类型中重写的方法:
interface MyInterface() {
@MethodAnnotation
void f()
}
class MyClass implements MyInterface {
override void f() { } // <- I want to process this method
}
@Inherited
元注释在这里似乎不太合适:
请注意,如果被注释的类型用于注释除类以外的任何内容,则此元注释类型无效。
另外,是否可能处理未在子类中被覆盖的继承类方法?像这样:
class MyClass {
@MethodAnnotation
void f() { }
}
class MySubClass extends MyClass { } // <- I want to process its f()
// or at least to find out that it doesn't
// override the method
我怎样才能访问
AbstractProcessor
中某个方法的被覆盖方法?我猜需要找到封闭类的子类,但是我还没有找到一个方法来实现这一点。
更新:我认为可以使用
RoundEnvironment.getRootElements()
来实现,但仍未找到正确的方法。