一 点睛
Java有四种元注解
使用@Retention
使用@Target
使用@Documented
使用@Inherited
这里仅介绍@Inherited
二 实战
@Inherited元注解指定被它修饰的注解将具有继承性,如果某个类使用了@XXX注解(定义该注解时使用了@Inherited注解),其子类自动被@XXX修饰。
1 Inheritable.java
import java.lang.annotation.*;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface Inheritable {
}
2 InheritableTest.java
// 使用@Inheritable修饰的Base类
@Inheritable
class Base
{
}
// TestInheritable类只是继承了Base类,
// 并未直接使用@Inheritable Annotiation修饰
public class InheritableTest extends Base
{
public static void main(String[] args)
{
// 打印TestInheritable类是否具有@Inheritable修饰
System.out.println(InheritableTest.class
.isAnnotationPresent(Inheritable.class));
}
}
三 运行
true
四 说明
说明 InheritableTest虽然没直接用@Inheritable修饰,但也具有该注解。