java 1.5中提供了对annotation的支持,其中内置提供的@Inherited一直没有太注意。这次在开发中碰到了一个问题,才算真正理解了。
1、@Inherited的定义
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Inherited {
}
根据Target的定义我们,我们知道了@Inherited只用于Annotation Type的定义当中。例如:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface Foo {
String value() default "";
}
2、作用
是用来指示Annotation Type是自动继承的。举例说明
@Foo
public class Parent {}
public class Sub extends Parent {}
Sub.class.isAnnotationPresent(Foo.class)返回true。我们看到,在Sub类上,没有@Foo,但是因为有Foo有Inherited存在,所以就会在父类当中去查找,这个过程会重复,只到Foo被找到或达到类的层次结构的最顶端。还是没有找到,就返回false.
3、注意事项
如果Parent为接口
@Foo
public interface Parent {}
public class Sub implements Parent {}
Sub.class.isAnnotationPresent(Foo.class)返回false。
4、结论
接口上的annotation是不能继承的;
类上的annotation是可以继承的,但annotation定义当中必须包含@Inherited.
分享到:
相关推荐
基本的 Annotation 介绍 16 @Override 注解 16 @Override 使用说明 17 @Deprecated 注解 17 @SuppressWarnings 注解 17 元注解 19 @Retention 注解 19 @Target 注解 19 @Documented注解 20 @Inherited 注解 20 异常-...
元注解: ...在Annotation类型的声明中使⽤了 target可更加明晰其修饰的⽬标。 作⽤:⽤于描述注解的使⽤范围(即:被描述的注解可以⽤在什么地⽅) 取值(ElementType)有: 1.CONSTRUCTOR:⽤于描述
Java中的注解(Annotation)是一种元数据,提供了一种形式化的方式来associate元数据与程序元素,使得程序元素可以携带更多的信息。在Java中,注解可以用来标记某个程序元素,例如类、方法、字段、构造器等,从而...
java8 源码 Java注解 简介 由于无论在Java后台或者Android开发中我们经常遇到注解这个...通过@Target进行添加到注解中,说明了Annotation所修饰的对象范围:Annotation可被用于 packages、types(类、接口、枚举、Ann
注解(Annotation)JDK5.0引入 内置注解: @Override:重写方法 @Deprecated:废弃 ...@Inherited:子类可以继承父类的注解 自定义注解 @interface 注解名{} 属性为注解的参数:可以使用默认值 反射(框架设计的
@Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(type = FilterType....
元注解(JDK的元Annotation)4.1.@Target4.2.@Retention4.3.@Documented4.4.@Inherited4.5.@Result四、在程序中使用(解析)注解五、案例——简单的测试框架 一、注解是什么? 从JDK5开始,Java增加对元数据的支持...
四种元注释:java.lang.annotation中的类 元注释:注释注释的注释,用来限定注释的特征 @Terget 用来限定某个注释的使用范围,可以对什么元素进行注释 @Retention 用来描述注释的有效范围 @Inherited ...
3.4 @Inherited 3.5 @Repeatable 四 Java 预置的注解 4.1 @Deprecated 4.2 @Override 4.3 @SuppressWarnings 4.4 @SafeVarargs 4.5 @FunctionalInterface 五 注解的属性 5.1 属性的定义 5.2 注解的提取 六 注解的...
注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。 Java 语言中的类、方法、变量、参数和包等都可以被标注。 内置的注解 作用在代码的注解是 @Override - 检查该方法是否是重写方法。如果发现其...
主要介绍了Java注解之Retention、Documented、Inherited注解介绍,本文内容和相关文章是系列文章,需要的朋友可以参考下
学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类? 211 6.7.4 局部内部类 211 6.7.5 匿名内部类 212 6.7.6 闭包(Closure)和回调 215 6.8 ...