元注解(meta-annotation)的作用是在其他注解上注解,用来提供对其他注解的类型说明。在自定义注解时,通常都需要使用元注解。JDK 1.5中定义了四个标准的元注解类型:@Target、 @Retention、@Documented和@Inherited。这些元注解可以在java.lang.annotation包中找到,下面分别讲解每个元注解的作用。
@Target描述了注解修饰的对象范围,它的取值在java.lang.annotation.ElementType中定义,表12.2.1给出了详细的参数定义。
表12.2.1 @Target的常见参数值
@Retention代表注解保留的时间,有些注解仅存在于源码中,有些在编译过程中会被丢弃,有些会偕同源码一起被编译进class文件中。编译在class文件中的注解可能会被虚拟机忽略,也可能会在class文件装载时被读取。其取值在java.lang.annotation.RetentionPolicy中定义,详情见表12.2.2。
表12.2.2 @Retention的常见参数值(www.xing528.com)
以测试框架JUnit的@Test注解为例,@Target定义为ElementType.METHOD,即@Test注解只能应用在方法上。@Retention取值为RetentionPolicy.RUNTIME,说明该注解将被保留至程序运行期间。
@Inherited表示一个注解类型会被自动继承。当开发者自定义注解时,标注在父类上的自定义的注解不会被子类所继承,但是可以在定义注解时给自定义的注解标注一个@Inherited注解来实现注解的继承。
@Documented表示使用该注解的元素应被javadoc文档化。如果一个类型声明时添加了@Documented注解,那么它的注解会成为被注解元素的公共API的一部分。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。