半夜三更来复习一下关于注解 部分的知识

四大源注解

所有关于注解的文章都绕不开这四个注解,我们也不例外
@Target
@Retention
@Documented
@Inherited
接下来就一个个的介绍
首先是 @Target
这个注解用来标志当前定义的注解是打在哪个位置的,比如类上,方法上,字段上,可以写多个
通过源码我们可以看到内部是一个数组,所有可以写多个

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Target {
    /**
     * Returns an array of the kinds of elements an annotation type
     * can be applied to.
     * @return an array of the kinds of elements an annotation type
     * can be applied to
     *数组表示此属性可以写多个值
     */
    ElementType[] value();
}


它可以使用的值有以下这些
在这里插入图片描述
ElementType是一个枚举类内部就是上面列举出的几个属性当然,也可以不用这个枚举,直接写字符串效果是一样的
那么他们分别代表什么呢
TYPE:类、接口(包括注解类型) 或enum声明。

    FIELD:字段声明(包括enum常量).,也就是打在字段上

    METHOD:方法声明。

    PARAMTER:形式参数声明。,方法的形参上

    CONSTRUCTOR:构造函数声明。constructort上

    LOCAL_VARIABLE:局部变量声明。方法内变量

    ANNOTATION_TYPE:注解类型声明。打在注解上

    PACKAGE:包声明

    TYPE_PARAMETER:参数类型声明

    TYPE_USE:使用一个类型,详见:java.lang.annotation.ElementType

@Retention 注解
指的是注解的生命周期
即会保留到哪个阶段。

SOURCE:源码级别保留,编译后即丢弃。
CLASS:编译级别保留,编译后的class文件中存在,在jvm运行时丢弃,这是默认值。
RUNTIME: 运行级别保留,编译后的class文件中存在,在jvm运行时保留,可以被反射调用。

@Documented 注解
能被javadoc此类的工具文档化 无值
@Inherited注解
当你想让你的自定义注解被继承时,可以使用这个注解,也没有参数取值

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值