@Inherited

Annotiert man einen Annotations-Typen mit @Inherited, so wird durch den Compiler sichergestellt, dass Klassen, die mit dieser Annotation annotiert wurden, diese an ihre Kindsklassen vererben. Es macht also Sinn , die @InProgress Annotation mit @Inherited zu annotieren. @Inherited hat nur eine Wirkung auf Annotationen, die sich auf Klassen beziehen.


1  @Inherited
2  @Target({ElementType.TYPE,ElementType.METHOD,ElementType.CONSTRUCTOR})
3  public @interface InProgress {}


1  @InProgress
2  public class Animal {
3   private String name;
4   public String getName() {  return name;  }
5   public void   setName( String n) {  name = n; }
6  }


1  public class Dog extends Animal {
2  }

Die Klasse Dog besitzt somit auch die Annotation @InProgress.
Auf diese Art kann man sich Annotationen schaffen, die analog zu Markerinterfaces arbeiten.