I have a parent class Parent and a child class Child, defined thus:
class Parent {
@MyAnnotation("hello")
void foo
Copied verbatim from http://www.eclipse.org/aspectj/doc/released/adk15notebook/annotations.html#annotation-inheritance:
Annotation Inheritance
It is important to understand the rules relating to inheritance of annotations, as these have a bearing on join point matching based on the presence or absence of annotations.
By default annotations are not inherited. Given the following program
@MyAnnotation
class Super {
@Oneway public void foo() {}
}
class Sub extends Super {
public void foo() {}
}
Then
Subdoes not have theMyAnnotationannotation, andSub.foo()is not an@Onewaymethod, despite the fact that it overridesSuper.foo()which is.If an annotation type has the meta-annotation
@Inheritedthen an annotation of that type on a class will cause the annotation to be inherited by sub-classes. So, in the example above, if theMyAnnotationtype had the@Inheritedattribute, thenSubwould have theMyAnnotationannotation.
@Inheritedannotations are not inherited when used to annotate anything other than a type. A type that implements one or more interfaces never inherits any annotations from the interfaces it implements.