Java:JDK的元Annotation
来源:互联网 发布:最好玩的三国游戏知乎 编辑:程序博客网 时间:2024/05/17 02:46
一、使用@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)); } }
- Java:JDK的元Annotation
- Annotation-JDK的元Annotation
- JDK的元Annotation
- 解析JDK的元Annotation
- Java Annotation元数据
- java Annotation(1)--JDK内置Annotation
- java.lang.annotation-jdk的注解原理与使用
- Java Annotation注释语法(元注释)
- Java 自定义Annotation(元数据、注解)
- Java:元注解(Meta-Annotation)详解
- 【JDK】Java 8的元空间(metaspace)
- 黑马程序员——JAVA高新技术---注解Annotation---概述,java的三种注解,元注解
- 通过Java的反射机制拿到Annotation上的元数据
- Annotation JDK 5.0的一个新特性
- JDK中JAXB相关的重要Annotation:
- JDK中JAXB相关的重要Annotation
- JDK中annotation包下的类
- jdk 1.5中annotation的简介
- Win8.1 App 在xaml中实现颜色选择器的功能
- sdk manager 打不开
- NYOJ852 蛇形填数(二)
- TabHost
- Error applying BeanValidation relational constraints
- Java:JDK的元Annotation
- 第二周项目二-有序的结构体数组
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- HDOJ 4604 Deque
- uva Where's Waldorf?
- 设置MyEclipse10字体类型和大小
- iOS Xcode配置文件之Geojson文件
- CodeCombat无法保存游戏进度的说明
- 应用JDBC对数据库进行操作