大可制作:QQ群:31564239(asp|jsp|php|mysql)

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中还没有作用。