Java元注解

在Spring中,我们经常能够看到各种各样的注解,Java自身也定义了很多的注解,这些注解的添加能够让程序员明确的知道这个类的状态。

Java中比较常见的注解类:

  • @Override 重写父类的方法
  • @Deprecated 标记过时,不建议再使用
  • @SuppressWarnings 消除警告

Java中的注解类,都使用@interface标记

    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.SOURCE)
    public @interface Override {

    }

在Override注解类中,可以看到有两个注解@Target和@Retention对Override进行了修饰,这些用来修饰注解类的注解称为元注解,元注解是注解的注解。

Java中的元注解主要有以下几种

  • Target
  • Retention
  • Documented
  • Inherited

Target

        @Documented
        @Retention(RetentionPolicy.RUNTIME)
        @Target(ElementType.ANNOTATION_TYPE)
        public @interface Target {
            ElementType[] value();
        } 

可以看到,Target有一个属性value,类型是ElementType数组,ElementType是一个枚举类型,主要用来标记被@Target修饰的注解类可应用在什么位置上

枚举值为

  • ANNOTATION_TYPE 可应用在注解类上
  • CONSTRUCTOR 构造器
  • FIELD 成员变量
  • LOCAL_VARIABLE 局部变量
  • METHOD 方法
  • PACKAGE 包
  • PARAMETER 参数
  • TYPE 类、接口以及枚举

1.8之后新增了两个枚举属性

  • TYPE_PARAMETER 类型参数声明
  • TYPE_USE 使用的类型

Retention

        @Documented
        @Retention(RetentionPolicy.RUNTIME)
        @Target(ElementType.ANNOTATION_TYPE)
        public @interface Retention {
            RetentionPolicy value();
        }

Retention注解有一个属性value,是RetentionPolicy类型的,RetentionPolicy是一个枚举类型,这个枚举决定了Retention注解的保留机制

RetentionPolicy有3个值:

  • CLASS 表示当程序编译时注解的信息被保留在class文件(字节码文件)中,但在运行的时候不会被虚拟机读取
  • RUNTIME 表示当程序编译时注解的信息被保留在class文件(字节码文件)中,运行时也会被虚拟机读取
  • SOURCE 表示注解的信息会被编译器抛弃,不会留在class文件中,注解的信息只会留在源文件中

Documented

        @Documented
        @Retention(RetentionPolicy.RUNTIME)
        @Target(ElementType.ANNOTATION_TYPE)
        public @interface Documented {
        }

@Documented元注解用于声明被该注解修饰的注解类是可以写入javadoc中的

Inherited

        @Documented
        @Retention(RetentionPolicy.RUNTIME)
        @Target(ElementType.ANNOTATION_TYPE)
        public @interface Inherited {
        }

@Inherited用于声明被该注解修饰的父类的注解,能够被子类继承

@Inherited使用的较少,稍微理解即可

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值