20170714 元Annotation

参考文献:《Java疯狂讲义》(第三版)

JDK的元Annotation(Meta Annotation)

使用@Retention

@Retention只能用于修饰Annotation定义,用于指定被修饰的Annotation可以保留多长时间,@Retention包含一个RetentionPolicy类型的value成员变量,所以使用@Retention时必须为该value成员指定变量指定值。

value成员变量:

1、RetentionPolicy.CLASS:编译器把Annotation记录在class文件里。当运行Java程序时,JVM不可获取Annotation信息。这是默认值。

2、RetentionPolicy.RUNTIME:编译器将把Annotation记录在class文件中。当运行Java程序时,JVM也可获取Annotation信息,程序可以通过反射获取该Annotation信息。

3、RetentionPolicy.SOURCE:Annotation只保留在源代码,编译器直接丢弃这种Annotation。

如果需要通过反射获取注解信息,就需要把value属性值为RetentionPolicy.RUNTIME的@Retention。

@Target

用于指定被修饰的Annotation能用于修饰哪些程序单元。

@Documented

用于指定被该元Annotation修饰的Annotation类将被javadoc工具提取成文档,如果定义Annotation类使用了@Docunmented修饰,则所有使用该Annotation修饰的程序元素的API文档中将会包含该Annotation说明。

@Inherited

指定被它修饰的Annotation将具有继承性——如果某个类使用了@Xxx注解修饰,则其子类将自动被@Xxx修饰。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容