JDK源码-java.lang.annotation-第一部分-源码学习
2016-11-21 15:52
295 查看
1.java.lang.annnotation包结构
2.Annontation(接口)
接口解释:注解接口,所有注解类型的父类型,定义了4个方法,类似Object,但是因为是接口所以无法重写方法,只能实现方法
方法解释:
Class
3.ElementType(枚举)
解释:程序元素类型,元素常用分类
源码解释:
public enum ElementType { /** 可以修饰类,接口,枚举类型 */ TYPE, /** 修饰成员变量 */ FIELD, /** 修饰方法 */ METHOD, /** 修饰参数 */ PARAMETER, /** 修饰构造函数 */ CONSTRUCTOR, /** 修饰局部变量 */ LOCAL_VARIABLE, /** 修饰注解 */ ANNOTATION_TYPE, /** 修饰包 */ PACKAGE }
4.RetentionPolicy(枚举)
解释:注解保留策略
源码解释:
public enum RetentionPolicy { /** * 注解保留到源码中,编译时去除 */ SOURCE, /** * 注解记录到class文件中,程序运行时JVM中不保留 */ CLASS, /** * 注解记录到class文件中,程序运行时JVM中保留注解信息 * 可以通过反射获取到 * @see java.lang.reflect.AnnotatedElement */ RUNTIME }
5.AnnotationFormatError(错误)
解释:当注释分析器试图从类文件读取注释并确定注释出现异常时,抛出该错误6.AnnotationTypeMismatchException(错误)
解释:若某个注释的类型在对该注释进行编译(或序列化)后发生了更改,而程序试图访问该注释的元素时,抛出此异常。参数:
element:注释元素的方法(Method)对象
foundType:在注释中找到的数据的(错误)类型。此字符串可以,但不一定包含该值。没有指定字符串的确切格式。
7.Documented
解释:如果定义了某个注解(A),使用了@Documented修饰时,使用javadoc和类似的工具进行格式化,所有使用注解(A),将会包含注解A的说明8.Inherited
解释:指定具有继承性质.标记注解,如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。只能用户类上使用,其他地方使用不起作用(包括接口)9.Target
解释说明注解的使用范围,作用域,使用枚举类ElementType源代码:
@Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.ANNOTATION_TYPE) public @interface Target { ElementType[] value(); }
10.Retention
解释:描述注解使用范围,在整个工程保留多久,使用枚举类RetentionPolicy源代码:
@Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.ANNOTATION_TYPE) public @interface Retention { RetentionPolicy value(); }
相关文章推荐
- JDK源码-java.lang.management-第一部分-源码学习
- JDK源码-java.lang.instrument-第一部分-源码学习
- JDK源码-java.lang.annotation-第二部分-应用示例
- [Java]JDK源码学习(1)ArrayList和Vector
- JDK源码分析之 java.lang.Boolean
- JDK1.8源码学习之ConcurrentHashMap.java
- JDK源码学习(4)-java.util.HashMap、LinkedHashMap与TreeMap
- JDK源码学习之TreeMap.java分析
- [Java]JDK源码学习(2)Integer
- java学习之旅65--常用类_Date类的使用_JDk源码分析
- JDK1.8源码学习之HashSet.java
- JDK源码分析:java.lang.Boolean
- Java源码学习 -- java.lang.String
- JAVA JDK API 源码学习 - Arrays.equals
- JDK源码分析Java.lang.Boolean的浅析——单例模式的应用(使我们更省内存)
- JDK源码分析:java.lang.String
- java学习之旅56--数组_StringBuilder和StringBuffer的使用_常用方法_方法链的实现_JDK源码分析
- java学习之旅57、58--数组_StringBuilder和StringBuffer的使用_JDK源码分析内部机制、常用方法补充_常见面试题答法
- JDK源码分析:java.lang.Boolean
- JDK源码分析:java.lang.String