Java注解本身不支持繼承。注解(Annotation)是一種用于為代碼提供元數(shù)據(jù)的機(jī)制,它們不能像類一樣被繼承。但是,你可以使用@Inherited
元注解來指定其他注解是否可以被子類繼承。
@Inherited
是Java標(biāo)準(zhǔn)庫中的一個元注解,它可以用在注解類型上。當(dāng)@Inherited
被用在注解類型上時,被該注解標(biāo)記的元素(類、方法、字段等)將被子類繼承。需要注意的是,@Inherited
只適用于類級別的注解,不適用于方法級別或字段級別的注解。
下面是一個簡單的例子:
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Inherited
public @interface MyAnnotation {
String value() default "";
}
@MyAnnotation(value = "Parent")
public class ParentClass {
}
public class ChildClass extends ParentClass {
}
public class Main {
public static void main(String[] args) {
System.out.println(ChildClass.class.getAnnotation(MyAnnotation.class).value()); // 輸出 "Parent"
}
}
在這個例子中,@MyAnnotation
是一個帶有@Inherited
元注解的注解類型。ParentClass
類使用了@MyAnnotation
注解,而ChildClass
類繼承了ParentClass
類。因此,ChildClass
類也繼承了@MyAnnotation
注解,可以通過ChildClass.class.getAnnotation(MyAnnotation.class).value()
獲取注解的值。