Java基础注解

1.Inherited /ɪnˈherɪtɪd/ 继承的(元注解)

类继承关系中@Inherited的作用
类继承关系中,子类会继承父类使用的注解中被@Inherited修饰的注解

接口继承关系中@Inherited的作用
接口继承关系中,子接口不会继承父接口中的任何注解,不管父接口中使用的注解有没有被@Inherited修饰

类实现接口关系中@Inherited的作用
类实现接口时不会继承任何接口中定义的注解

2.Documented /ˈdɒkjumentɪd/ 记录,文件化(元注解)

@Documented 注解表明这个注解应该被 javadoc工具记录. 默认情况下,javadoc是不包括注解的. 但如果声明注解时指定了 @Documented,则它会被 javadoc 之类的工具处理, 所以注解类型信息也会被包括在生成的文档中,是一个标记注解,没有成员。

3.Retention /rɪˈtenʃ(ə)n/ 保持,保留(元注解)

@Retention注解:只能用于修饰一个Annotation定义,用于指定该Annotation的生命周期。@Retention包含一个RetentionPolicy类型的成员变量,使用@Retention注解时必须为该变量成员赋值。下面是这三种保留策略的说明:

RetentionPolicy.SOURCE: 在源文件(.java文件),即源文件中保留,编译时期注解将被丢弃。

RetentionPolicy.CLASS: 在class文件中有效,即.class文件中保留。当JVM解释.class字节码时,不会保留该注解。这是默认策略。

RetentionPolicy.RUNTIME: 在运行时有效,即运行时保留。当运行Java程序时,JVM会保留注解,Java程序可以通过反射获取该注解。

这3个生命周期分别对应于:Java源文件(.java文件) —> .class文件 —> 内存中的字节码

首先要明确生命周期长度 SOURCE < CLASS < RUNTIME ,所以前者能作用的地方后者一定也能作用。

如果需要在运行时去动态获取注解信息,那只能用 RUNTIME 注解,比如@Deprecated使用RUNTIME注解

如果要在编译时进行一些预处理操作,比如生成一些辅助代码(如 ButterKnife),就用 CLASS注解;

如果只是做一些检查性的操作,比如 @Override 和 @SuppressWarnings,使用SOURCE 注解。

4.Target /ˈtɑːrɡɪt/ 目标,指标(元注解)

@Target注解:用于修饰Annotation定义,指定被修饰的Annotation能用于修饰哪些程序元素。@Target包含一个数组成员变量,该值如下(Java 8版本):

@Target(ElementType.TYPE)——接口、类、枚举、注解
@Target(ElementType.FIELD)——字段、枚举的常量
@Target(ElementType.METHOD)——方法
@Target(ElementType.PARAMETER)——方法参数
@Target(ElementType.CONSTRUCTOR) ——构造函数
@Target(ElementType.LOCAL_VARIABLE)——局部变量
@Target(ElementType.ANNOTATION_TYPE)——注解
@Target(ElementType.PACKAGE)——包

5.@ConfigurationProperties 与 @Value

两者都是读取.yml或者.properties文件属性
这是@ConfigurationProperties
在这里插入图片描述
这是@Value
在这里插入图片描述
区别是注解作用的位置:@Value多点
在这里插入图片描述

@ConfigurationProperties不支持EL表达式
@Value支持EL表达式

后续还会更新常用到的注解做个笔录…

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值