Я играю с обработкой аннотации 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
?
Я думаю, для этого мне нужно найти подклассы класса eclosing, но я тоже не нашел способ сделать это.
UPD. Я полагаю, что это возможно, используя RoundEnvironment.getRootElements()
, но не нашел подходящего способа сделать это.