java自带的元注解

元注解

一、@Target

注解作用的位置(类、方法、字段……)

1、@Target(ElementType.TYPE)

主要是作用在类上面

2、FIELD

主要是作用在字段(也就是在对象属性上)

3、METHOD

主要作用在方法上面

4、PARAMETER

主要是作用在方法中参数的位置

5、CONSTRUCTOR( constructor)

主要是作用在构造函数上面

6、LOCAL_VARIABLE (variable)

主要作用在局部变量中

7、ANNOTATION_TYPE

主要是作用在注解上面

8、PACKAGE

主要作用在包上面

9、USE

作用在所有的地方

/**
     * Type parameter declaration
     *
     * @since 1.8
     */
    TYPE_PARAMETER,

    /**
     * Use of a type
     *
     * @since 1.8
     */
    TYPE_USE

上面的两个方法都是1.8版本之后引入的

二、@Retention

定义了该Annotation被保留的时间长短
public enum RetentionPolicy {
    /**
     * Annotations are to be discarded by the compiler.
     */
    SOURCE,

    /**
     * Annotations are to be recorded in the class file by the compiler
     * but need not be retained by the VM at run time.  This is the default
     * behavior.
     */
    CLASS,

    /**
     * Annotations are to be recorded in the class file by the compiler and
     * retained by the VM at run time, so they may be read reflectively.
     *
     * @see java.lang.reflect.AnnotatedElement
     */
    RUNTIME
}

1、SOURCE

在源文件中有效,但是注释将被编译器丢弃

2、CLASS

在class文件中有效

3、RUNTIME
@Retention(RetentionPolicy.RUNTIME)

在运行时有效

三、@Inherited

指示注释类型被自动继承。

如果在注释类型声明中存在 Inherited 元注释,并且用户在某一类声明中查询该注释类型,同时该类声明中没有此类型的注释,则将在该类的超类中自动查询该注释类型。此过程会重复进行,直到找到此类型的注释或到达了该类层次结构的顶层 (Object) 为止。如果没有超类具有该类型的注释,则查询将指示当前类没有这样的注释。

注意,如果使用注释类型注释类以外的任何事物,此元注释类型都是无效的。还要注意,此元注释仅促成从超类继承注释;对已实现接口的注释无效。

四、@Repeatable

1.8 版本之后引入的

注释类型java.lang.annotation.Repeatable用于表示其(meta-)注释声明的注释类型是可重复的 。 @Repeatable的值表示可重复注释类型的包含注释类型。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值