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.
分享到:
相关推荐
Java注解,也称为Annotation,是Java编程语言中的一种特性,用于向编译器、JVM或工具提供元数据。元数据是关于数据的数据,它提供了额外的信息,但不直接影响程序的执行。注解在代码中以`@注解名`的形式出现,主要...
Annotation 是一个接口,程序可以通过反射来获取指定程序中元素的 Annotation 对象,然后通过该 Annotation 对象来获取注解中的元数据信息。 在 Java 中,Annotation 可以被用于提供元数据信息,例如:作者、版本号...
在Java编程语言中,注解(Annotation)是一种元数据,它提供了在编译时或运行时处理代码的一种方式。通过注解,开发者可以向编译器或JVM提供有关代码的附加信息,而这些信息通常不直接影响程序的执行,但可以用于...
##### 4.5 `@Inherited`:在注释中使用继承 `@Inherited`元注解使注解可以被子类继承。 ```java @Inherited public @interface MyAnnotation {} ``` #### 五、使用反射读取RUNTIME的Annotation信息 通过Java的...
Java 5引入的注解(Annotation)是一种元数据,它提供了在代码中嵌入信息的方式,这些信息可以被编译器、JVM或其他工具在编译时或运行时使用。注解可以用来简化代码,提高可维护性,并帮助工具进行静态分析。 1. ...
ElementType 中有多个值,分别表示不同的应用范围,例如ANNOTATION_TYPE、CONSTRUCTOR、FIELD、LOCAL_VARIABLE、METHOD、PACKAGE、PARAMETER 和 TYPE。 @Inherited 注解是 Java 中的一种元注解,用于指定注解类型...
在Java编程语言中,注解(Annotation)是一种元数据,它提供了一种安全的方法来关联信息于程序元素,如类、方法、变量等,而这些信息可以被编译器或运行时系统用来进行验证或执行特定的任务。自JDK 5开始,注解成为...
在Java编程语言中,注解(Annotation)是一种元数据,它提供了向编译器、工具或运行时系统提供额外信息的方式。自定义注解允许开发者创建自己的标记来满足特定需求,比如代码生成、验证、持久化等。本文将深入探讨...
* ElementType.ANNOTATION_TYPE:用于注解其他注解类型。 * ElementType.PACKAGE:用于注解包。 @Target 的作用是指定注解可以应用于哪些程序元素,从而提高注解的灵活性和可扩展性。 3.@Documented @Documented ...
5. **元注解**:元注解是用于定义注解本身的注解,例如`@Target`定义注解能应用的程序元素类型,`@Retention`定义注解的保留策略,`@Documented`表明是否将注解包含在生成的Javadoc中,`@Inherited`表示子类是否自动...
在Java编程语言中,注解(Annotation)是一种元数据,它提供了在代码中附加信息的能力,这些信息可以被编译器或运行时环境用来验证、处理或增强代码的行为。本篇我们将深入探讨“限定使用、文档、继承”这三个关键...
Java注解(Annotation)是Java语言提供的一种元数据机制,用于向编译器或JVM提供额外的信息。这些信息可以用来验证代码、控制代码生成、配置应用等。注解是自Java 5版本引入的特性,它使得程序员可以在源代码中嵌入...
在讨论《疯狂java讲义》电子版PDF中关于javadoc工具的使用及其对注解的处理时,我们需要先了解javadoc工具是什么,以及注解(Annotation)在Java中的作用。javadoc是Java提供的一个工具,它可以自动提取Java源代码中...
4. `@Inherited`:使子类继承父类的注解。 七、实例分析 下面是一个简单的注解和处理器示例,用于检查类是否有特定注解: ```java @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @...
Java注解,也称为 Annotation,是Java编程语言中的一种元数据机制,用于向编译器、JVM(Java虚拟机)或工具提供有关代码的信息。这些信息可以用来进行编译时检查、运行时处理,或者作为配置信息。注解不是程序的一...
- **示例**:如果一个类上有 `@Inherited` 的 Annotation,则其子类会自动继承该 Annotation。 #### 四、内置标准 Annotation ##### 1. **@Override** - **定义**:用于标记重写方法。 - **用途**:帮助开发者识别...
- **@Inherited**:用来指定注解是否可以被子类继承。 #### 5. 实战应用 在实际开发中,自定义注解的应用非常广泛,例如: - **Spring框架**:Spring框架大量使用了注解来实现依赖注入、切面编程等功能。 - **JPA...
Java注解(Java Annotation)是Java编程语言中的一个重要特性,它提供了一种元数据的方式,允许程序员在代码中嵌入额外的信息。这些信息可以被编译器、JVM或者特定工具在编译时或运行时读取,用于执行各种验证、生成...
如是否存储在class文件或运行时可见)、`@Target`(指定Annotation可以应用到哪些程序元素上)、`@Documented`(表明Annotation应包含在生成的Javadoc中)和`@Inherited`(使子类继承父类的Annotation)等。...
在Java编程中,注解(Annotation)是一种元数据,它提供了在代码中附加信息的方式,这些信息可以被编译器或者运行时环境用来执行特定的任务。这篇博客“使用annotation获取实体类注释”主要探讨了如何利用注解来增强...