Java 注解用法
Annontation是Java5开始引入的新特征。中文名称一般叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata) 与程序元素(类、方法、成员变量等)进行关联。
Annontation像一种修饰符样,应用于包、类型、构造方法、方法、成员变量、参数及本地变量的声明语句中。
2、基本Annontation
-
java提供五个基础的annontation类型
-
@Override
-
此注解作用于方法,作用于此方法的注解,意味此方法受重写规则的约束,否则不能编译成功
-
-
@Deprecated
-
作用于方法,标注此方法过时
-
-
@SuppressWarnings
-
对于某些不想看到的警告信息,可以通过这个注解来屏蔽
-
-
@SafeVarargs
-
抑制类型转换异常的警告信息,只能用在参数长度可变的方法或构造方法上,且方法必须声明为static或final,否则会出现编译错误。一个方法使用@SafeVarargs注解的前提是,开发人员必须确保这个方法的实现中对泛型类型参数的处理不会引发类型安全问题。
-
-
@FunctionalInterface
-
Java 8为函数式接口引入的一个新注解,主要用于编译级错误检查,加上该注解,当你写的接口不符合函数式接口定义的时候,编译器会报错。保证该接口只能包含一个抽象方法
-
-
3、自定义注解
参考资料:https://www.jianshu.com/p/9471d6bcf4cf
4、getAnnotation方法
-
获取作用于元素上的单个注解对象
4.1、获取类注解属性值
/**
* 自定义注解
*/
4.2、获取方法注解属性值
/**
* 自定义注解
*/
4.3、获取属性注解属性值
/**
* 自定义注解
*/
5、getAnnotations方法
-
获取作用于元素上的所有注解对象,包括父类注解
/**
*自定义注解1
*/
6、isAnnotationPresent方法
-
此方法判断元素是否作用注解,如果此方法作用于此注解,则返回true,否则返回false
/**
*自定义注解
*/
7、getDeclaredAnnotations方法
-
返回直接存在于此元素上的注解,即不包括从父类继承过来的注解。比较简单理解,不写代码案例了。
8、@Retention
@Retention是Java 1.8 才加进来的,所以算是一个新的特性
Repeatable的英文意思是可重复的。顾名思义说明被这个元注解修饰的注解可以同时作用一个对象多次,但是每次作用注解又可以代表不同的含义。
下面我们看一个人玩游戏的例子
/**一个人喜欢玩游戏,他喜欢玩英雄联盟,绝地求生,极品飞车,尘埃4等,则我们需要定义一个人的注解,他属性代表喜欢玩游戏集合,一个游戏注解,游戏属性代表游戏名称*/
/**玩家注解*/
9、编译时处理Annotation
处于RetentionPolicy.CLASS生命周期的注解信息,如何提取?
问题就是当处理CLASS阶段的注解信息,会在运行期间之前就丢失,因此不能通过运行期间的反射机制提取数据
但是可以通过APT工具,在javac期间提取处于编译时的注解数据信息
具体如何实现
/**
*创建一个处于编译期间的注解
*/
如何通过apt编译
-
javac -d . MyAnnotationProcess.java
-
javac -d . *.java -processor apt.MyAnnotationProcess
最终输出结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!