注解@Retention的作用

本文详细解析了注解@Retention的作用与三种不同的生命周期:SOURCE、CLASS和RUNTIME,以及它们在不同场景下的应用。同时介绍了@Override、@Deprecated和@SuppressWarnings等常见元注解的使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注解@Retention可以用来修饰注解,是注解的注解,称为元注解。

Retention注解有一个属性value,是RetentionPolicy类型,而RetentionPolice是一个枚举类型。

RetentionPolice这个枚举决定了Retention注解该如何保持,也可理解为Retention搭配RetentionPolice使用,而RetentionPolice枚举类型中有SOURCE,CLASS,RUNTIME三个值。

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

2:RetentionPolice.CLASS:注解被保留到class文件,当JVM加载class文件的时候,注解被遗弃,这是默认的生命周期。

3:RetentionPolice.RUNTIME:注解不仅保存到Java文件中,jvm加载class文件之后任然存在。

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

如何选择合适的注解生命周期呢?

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

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

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

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

注解@Override用在方法上,当我们想重写一个方法时,在方法上加@Override,当我们方法的名字出错时,编译器就会报错
注解@Deprecated,用来表示某个类或属性或方法已经过时,不想别人再用时,在属性和方法上用@Deprecated修饰
注解@SuppressWarnings用来压制程序中出来的警告,比如在没有用泛型或是方法已经过时的时候

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值