美文网首页
Java 注解

Java 注解

作者: markeNick | 来源:发表于2020-05-23 00:03 被阅读0次

    元注解(meta-annotation)


    元注解的作用就是负责注解其他注解,Java定义了四个标准的meta-annotation类型,他们被用来提供对其他annotation类型作说明,这些类型和他们所支持的类在java.lang.annotation包中可以找到。

    • @Target:用于描述注解的使用范围
    • @Retention:表示需要在什么级别保存该注释信息,用于描述注解的生命周期(source class runtime)
    • @Document:说明该注解将被包含在javadoc中
    • @Inherited:说明子类可以继承父类中的该注解

    基于上面这四个元注解,我们可以进行自定义注解开发。

    .

    @Target 注解

    作用:描述注解的使用范围

    这个@Target注解有一个value值,其类型是一个枚举数组,ElementType枚举中定义了取值范围。

    使用@Target需要传入一个范围取值,value可以有多个值,如:

    @Target(value = ElementType.TYPE)@Target(ElementType.TYPE, ElementType.METHOD)

    源码:

    @Documented
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.ANNOTATION_TYPE)
    public @interface Target {
    
        ElementType[] value();
    }
    
    public enum ElementType {
     
        TYPE, // 类、接口、枚举类
     
        FIELD, // 成员变量(包括:枚举常量)
     
        METHOD, // 成员方法
     
        PARAMETER, // 方法参数
     
        CONSTRUCTOR, // 构造方法
     
        LOCAL_VARIABLE, // 局部变量
     
        ANNOTATION_TYPE, // 注解类
     
        PACKAGE, // 可用于修饰:包
     
        TYPE_PARAMETER, // 类型参数,JDK 1.8 新增
     
        TYPE_USE // 使用类型的任何地方,JDK 1.8 新增
     
    }
    
    

    .

    @Retention 注解

    作用:描述注解保留的时间范围。

    其使用和 @Target 类似

    源码:

    @Documented
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.ANNOTATION_TYPE)
    public @interface Retention {
        
        RetentionPolicy value();
    }
    
    public enum RetentionPolicy {
     
        SOURCE,    // 源文件保留
        CLASS,     // 编译期保留,默认值
        RUNTIME    // 运行期保留,可通过反射去获取注解信息
    }
    
    

    .

    利用反射操作注解

    相关文章

      网友评论

          本文标题:Java 注解

          本文链接:https://www.haomeiwen.com/subject/cevhahtx.html