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();
}