@Retention和@target的作用

本文详细介绍了Java中的元注解@Retention,它用于定义注解的生命周期,包括SOURCE、CLASS和RUNTIME三种策略。SOURCE注解仅存在于源文件,CLASS在编译后丢弃,RUNTIME则在运行时可被读取。根据不同的需求,如检查、预处理和运行时获取信息,选择合适的@Retention策略。此外,还提到了@Target注解用于指定注解可以应用的位置。
摘要由CSDN通过智能技术生成

@Retention是元注解,可修饰注解,即是控制注解生命周期的注解。
@Retention有类型值,RetentionPolicy类型,Enum RetentionPolicy是枚举类型
@Retention是通过RetentionPolicy .SOURCE, .CLASS, .RUNTIME 来确定注解的生命周期

            RetentionPolicy .SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;

            RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;

            RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;

什么时候使用SOURCE、CLASS、RUNTIME?

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

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

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

@Target({ElementType.TYPE}) 注解

ElementType 这个枚举类型的常量提供了一个简单的分类:注释可能出现在Java程序中的语法位置(这些常量与元注释类型(@Target)一起指定在何处写入注释的合法位置)

           

           

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值