From Gossip@Openhome

Java Gossip: 子類是否繼承父類的 annotation - Inherited

在您定義Annotation型態後並使用於程式碼上時,預設上父類別中的Annotation並不會被繼承至子 類別中,您可以在定義 Annotation時加上java.lang.annotation.Inherited的Annotation,這讓您定義的Annotation型 別被繼承下來。

例如:

  • Debug.java
package onlyfun.caterpillar;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Inherited;

@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface Debug {
String value();
String name();
}

在下面這個程式中使用它:
  • SomeObject.java
package onlyfun.caterpillar;

public class SomeObject {
@Debug(
value = "unit",
name = "debug1"
)
public void doSomething() {
// ....
}
}

如果您有一個類別繼承自SomeObject,則理想上@Debug也會被繼承下來,不過事實上Inherited在Sun JDK 5.0中還沒有作用。