JDK源码-java.lang.annotation-第一部分-源码学习

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值