[注解]-自定义注解Retention、Target学习

本文详细介绍了Java注解的两个关键元注解:@Retention和@Target。@Retention用于控制注解的生命周期,分为SOURCE、CLASS和RUNTIME三个策略,分别对应源码阶段、编译后和运行时。@Target则定义了注解可以应用的目标,包括类、方法、参数等。理解这两个注解对于高效利用Java注解进行代码管理和运行时动态处理至关重要。
摘要由CSDN通过智能技术生成

[注解]-自定义注解

1.0 @Retention

1.1概述

介绍:称为元注解,也就是注解的注解 java.lang.annotation.Retention形态可以在定义Annotation注解时,指示编译程序如何对待自定义的Annotation形态。


@Retention包含一个属性value,是 RetentionPolicy 的类型,它的数据类型是枚举类Enum,通过枚举类的值来决定Retention注解如何保持,也就是RententionRententionPolicy一起使用。

1.2 作用
  1. 配置和RetentionPolicy有3个值:

CLASSRUNTIMESOURCE

  1. 按照使用决定了注解使用的时期:
    生命周期:
    1. RetentionPolicy.SOURCE
      注解只保留在java源文件,当Java文件编译成class文件的时候,注解被遗弃;
    2. RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;
    3. RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载,就是内存字节码 ,其他反射机制的代码进行读取和使用。
1.3 使用
  1. 选择合适的类型:

生命周期长度 :SOURCE < CLASS < RUNTIME

  1. 场景:

    a. RUNTIME : 般如果需要在运行时去动态获取注解信息

    b. CLASS:编译时进行一些预处理操作,比如生成一些辅助代码(如 ButterKnife)

    c. SOURCE 注解 : 如果只是做一些检查性的操作,比如 @Override 和 @SuppressWarnings

2.0@Target

2.1概述

此注解说明注解的作用目标,默认值为任何元素。

为这个 value 传值:

`@Target(value = {ElementType.FIELD})`
  1. 如果注解中有一个名称为value的属性,且你只想设置value的属性(即其他属性都采用默认值或者只有一个value属性),那么可以省略value=部分。
  2. 数组属性中只有一个元素,这时候属性值部分可以省略大括@Target(value={ElementType.TYPE})可以省略value=部分,由于数组只有一个元素,所以可以省略大括号。简写成@Target(ElementType.TYPE)
2.2属性
  • ElementType.TYPE:允许被修饰的注解作用在类、接口和枚举上
  • ElementType.FIELD:允许作用在属性字段上
  • ElementType.METHOD:允许作用在方法上
  • ElementType.PARAMETER:允许作用在方法参数上
  • ElementType.CONSTRUCTOR:允许作用在构造器上
  • ElementType.LOCAL_VARIABLE:允许作用在本地局部变量上
  • ElementType.ANNOTATION_TYPE:允许作用在注解上
  • ElementType.PACKAGE:允许作用在包上
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值