Аннотация наследуется, если она помечена другой аннотацией @Inherited
. Итак, если аннотация @Async
, которую вы дали в качестве примера, принадлежит вам, просто сделайте следующее:
@Inherited
// other annotations (e.g. Retention, Target etc)
@interface Async {
}
Если, однако, это не ваша аннотация, то единственный способ сделать ее видимой в подклассе - создать тривиальная реализация foo()
в этом подклассе и пометьте этот метод этой аннотацией, например
public class Base {
@Async
public void foo() {
}
}
public class Child extends Base {
// Trivial implementation needed only to make the annotation available here.
@Async
public void foo() {
super.foo();
}
}