您的位置:首页 > 编程语言 > Java开发

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 源码