Java元注解@Retention规则
@Retention是java当中的一个元注解,该元注解通常都是用于对软件的测试
1、适用方式:
@Retention(RetentionPolicy.RUNTIME)
@interface Task{.......}
参数RetentionPolicy.RUNTIME就说明了,@Task注解在程序运行时是可见的
RetentionPolicy的枚举类型还有SOURCE、CLASS分别指定注解对于那个级别是可见的,但是
我们一般都是用RUNTIME,因为这是在程序运行时可以对注解进行读取,从而易于软件的测试
2、接下来我们要先介绍一下java程序的内省和反射机制,之后在讨论@Retention的具体用法实例
在java虚拟机JVM在运行时,就会将类进行加载,这时,每个类都会生成一个Class数据类型的
对象(Class类在java.lang.Class中),这个对象就是对应类的“运行时对象”,通过这个
运行时对象,就能够获取对应类的许多信息,也就是说,运行时对象实际就是对应类的一个映射
这就java的内省反射机制
3、接下来我们讨论一下,这个Class运行时对象的使用
①获取对应类的Class数据类型的运行时对象的引用——getClass()
public class Point{.....} //声明一个类
Point pt = new Point(); //创建对应类的实例对象
Class cls = pt.getClass() ; //则cls 就指向了Point类的运行时对象
②运行时对象cls的成员函数
<1>public String getName()
返回对应类的类名
<2>public boolean isAnnotationPresent(注解名.class)
判定指定的"注解"是否在运行时注解了 cls 的对应类
<3>public boolean isAnnotation();
判定cls 是否在运行时被任何注解 注解过
<4>public A getAnnotation(注解名.class)
A 指的是一个注解的类型,具体用法如下:
@Retention(RetentionPolicy.RUNTIME) //指定@Task运行时可见
@interface Task{String descirption(); }
@Task(descroption="NoFinished") //为computer作注
class Computer{.....}
则 Computer my = new Computer() ;
Class cls = my.getClass() ;
Task tk = (Task) cls.getAnnotation(Task.class);
//这时 tk 就指向了标注Computer的注解@Task
tk.description(); //调用@Task中的description(),输出"NoFinishing"
<5> public Method[] getMethods()
返回由对应类中的所有的方法形成的Method数组,每个Method对象都唯一对应
一个对应类中的方法,通过Method[i]就可以获得对应方法的信息
(Method类在java.lang.reflect.Method中)
3、这个Method类也有很多成员方法,用来获取对应的方法的信息
如也有:
public boolean isAnnotationPresent(注解名.class)
判定对应的方法是否被指定的注所注解
public A getAnnotation(注解名.class)
用法和上面的讲述的一样,之不过创建的注解型的引用变量指向的是 "标记对应方法的注解"
4、上面将所有的成员方法只有在注解运行时可见的情况下才能够发挥作用,
所以@Retention变得很有用
@Retention的用法实例:
运行结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架