`
xucons
  • 浏览: 85383 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Annotation中的@Inherited

    博客分类:
  • Java
阅读更多

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.

分享到:
评论
1 楼 ricksmiles11 2009-03-07  

    [*]
[img][/img][url][/url]

相关推荐

    观看韩顺平学习整理java的笔记到异常

    基本的 Annotation 介绍 16 @Override 注解 16 @Override 使用说明 17 @Deprecated 注解 17 @SuppressWarnings 注解 17 元注解 19 @Retention 注解 19 @Target 注解 19 @Documented注解 20 @Inherited 注解 20 异常-...

    Java中三种标准注解和四种元注解.pdf

    元注解: ...在Annotation类型的声明中使⽤了 target可更加明晰其修饰的⽬标。  作⽤:⽤于描述注解的使⽤范围(即:被描述的注解可以⽤在什么地⽅)  取值(ElementType)有:  1.CONSTRUCTOR:⽤于描述

    Java开发自定义注解详解.doc

    Java中的注解(Annotation)是一种元数据,提供了一种形式化的方式来associate元数据与程序元素,使得程序元素可以携带更多的信息。在Java中,注解可以用来标记某个程序元素,例如类、方法、字段、构造器等,从而...

    java8源码-Annotation_demo:Annotation_demo

    java8 源码 Java注解 简介 由于无论在Java后台或者Android开发中我们经常遇到注解这个...通过@Target进行添加到注解中,说明了Annotation所修饰的对象范围:Annotation可被用于 packages、types(类、接口、枚举、Ann

    JavaSE-注解与反射(框架底层实现机制)

    注解(Annotation)JDK5.0引入 内置注解: @Override:重写方法 @Deprecated:废弃 ...@Inherited:子类可以继承父类的注解 自定义注解 @interface 注解名{} 属性为注解的参数:可以使用默认值 反射(框架设计的

    @SpringBootApplication注解到底做了什么,你真的了解吗?

    @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(type = FilterType....

    Java语言高级部分之注解是什么?

    元注解(JDK的元Annotation)4.1.@Target4.2.@Retention4.3.@Documented4.4.@Inherited4.5.@Result四、在程序中使用(解析)注解五、案例——简单的测试框架 一、注解是什么?  从JDK5开始,Java增加对元数据的支持...

    \java超强笔记(超级经典)

    四种元注释:java.lang.annotation中的类 元注释:注释注释的注释,用来限定注释的特征 @Terget 用来限定某个注释的使用范围,可以对什么元素进行注释 @Retention 用来描述注释的有效范围 @Inherited ...

    Java内功修炼系列:注解(Annotation)

    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 注解的提取 六 注解的...

    Java版水果管理系统源码-huihe_2020summer:2020假期spring学习,vue留给你们了,有兴趣自己可以看官方文档,中文很

    注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。 Java 语言中的类、方法、变量、参数和包等都可以被标注。 内置的注解 作用在代码的注解是 @Override - 检查该方法是否是重写方法。如果发现其...

    Java注解之Retention、Documented、Inherited介绍

    主要介绍了Java注解之Retention、Documented、Inherited注解介绍,本文内容和相关文章是系列文章,需要的朋友可以参考下

    疯狂JAVA讲义

    学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类? 211 6.7.4 局部内部类 211 6.7.5 匿名内部类 212 6.7.6 闭包(Closure)和回调 215 6.8 ...

Global site tag (gtag.js) - Google Analytics