解析JDK的元Annotation
来源:互联网 发布:windows旧系统文件 编辑:程序博客网 时间:2024/04/27 23:55
一、使用@Retention
只能修饰一个Annotation定义,用于指定该Annotation可以保留多长时间;
包含一个RetentionPolicy类型的value成员变量:
RetentionPolicy.CLASS:编译器把注释记录在class文件中,当运行Java程序时,JVM不在保留注释,默认值;
RetentionPolicy.RUNTIME:编译器将把注释记录在class文件中,当运行Java程序时,JVM也会保留注释,程序可以通过反射获取该注释;
RetentionPolicy.SOURCE:编译器直接丢弃这种策略的注释;
- //定义下面的Testable注解保留到运行时
- @Retention(value="RetentionPolicy.RUNTIME")
- public @interface Testable{}
二、使用@Target
用于修饰一个Annotation定义,指定被修饰的Annotation能用于修饰哪些程序元素;
包含一个名为value的成员变量:
ElementType.ANNOTATION_TYPE:只能修饰Annotation;
ElementType.CONSTRUCTOR:只能修饰构造器;
ElementType.FIELD:只能修饰成员变量;
ElementType.LOCAL_VARIABLE:只能修饰局部变量;
ElementType.METHOD:只能修饰方法定义;
ElementType.PACKAGE:只能修饰包定义;
ElementType.PARAMETER:只能修饰参数;
ElementType.TYPE:只能修饰类、接口(包括注释型)或枚举定义;
- //定义下面的ActionListenerFor注解只能用于成员变量
- @Target(ElementType.FIELD)
- public @interface ActionListenerFor{};
三、使用@Documented
用于指定该元Annotation修饰的Annotation类将被javadoc工具提取成文档;
- @Retention(value="RetentionPolicy.RUNTIME")
- @Target(ElementType.METHOD)
- //定义下面的Testable注解将被javadoc提取
- @Documented
- public @interface Testable{}
四、使用@Inherited
指定它修饰的Annotation将具有继承性;
如果某个类使用了A Annotation(定义该Annotation使用了@Inherited修饰)修饰,则其子类将自动具有A注释;
- @Target (ElementType.TYPE)
- @Retention(RetentionPolicy.RUNTIME)
- @Inherited
- public @interface Inheritable {
- }
- //使用@Inheritable修饰Base类
- @Inheritable
- class Base{
- }
- //TestInheritable类只是继承了Base类
- //并未直接使用@Inheritable Annotation修饰
- public class InheritableTest extends Base{
- public static void main(String[] args){
- System.out.println(InheritableTest.class.isAnnotationPresent(Inheritable.class));
- }
- }
- 解析JDK的元Annotation
- Annotation-JDK的元Annotation
- JDK的元Annotation
- Java:JDK的元Annotation
- java annotation注解的解析
- Annotation JDK 5.0的一个新特性
- JDK中JAXB相关的重要Annotation:
- JDK中JAXB相关的重要Annotation
- JDK中annotation包下的类
- jdk 1.5中annotation的简介
- Java Annotation元数据
- 元Annotation注解
- Annotation元注解
- 码元的详细解析
- jdk中Annotation 使用
- java.lang.annotation-jdk的注解原理与使用
- 详解JDK 5 Annotation 注解之@Target的用法介绍
- Annotation--学习:JDK内建Annotation
- java 设计模式
- linux下查看cpu物理个数和逻辑个数
- Keil C中如何直接打印char类型变量
- 《Intent的一些用法(不断更新)》
- Hadoop本地库与系统版本不一致引起的错误解决方法
- 解析JDK的元Annotation
- 如何画UML用例图
- 简单二叉树的实现和遍历
- FFMPEG中最关键的结构体之间的关系
- 和清科技今天在这里安家,欢迎各位过来采访
- 深度优化ADB 可以区分相同ID 手机,中文命令等等
- Java socket编程时readLine()问题
- 还原,备份等操作
- Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句