Java-注解
1|0概念
- Jdk1.5之后引入注解概念
- 用来说明,注释
2|0作用
- 编译检查
如:@Override,检查方法是否继承父类- 编写文档
如:@author、@version、@since、@see、@link、@code、@param、@return、@exception、@throws等- 代码分析
使用反射对代码进行分析
3|0JDK内置注解
- @Override:检查方法是否继承父类
- @Deprecated:表示已过时
- @SuppressWarnings:压制警告,标注此注解后就不提示警告了
一般传递参数all:@SuppressWarnings("all")
案例:
4|0自定义注解
格式:
- 元注解
- public @interface 注解名称 {
属性列表
}
本质:
- 注解的本质就是接口,默认继承Annotation接口
属性:接口中的抽象方法
- 属性的返回值类型有下列取值
基本数据类型
String
枚举
注解
以上类型的数组- 定义了属性,在使用时需要给属性赋值
如果使用属性时设置了default默认初始值,则使用注解时可以不进行属性赋值
如果只有一个名为value的属性,使用注解时value可以省略,直接赋值即可
数组赋值时,值使用{ }包裹,如果只有一个值,大括号可以省略
元注解:用于描述注解的注解
- @Target:描述注解能够作用的位置
ElementType的取值:
TYPE:作用于类上
FIELD:作用于成员变量上
METHOD:作用于方法上- @Retention:描述注解能够保留的阶段
RetentionPolicy的取值:
SOURCE:当前被描述的注解,不会保留到class字节码文件中
CLASS:当前被描述的注解,会保留到class字节码文件中,但不会被JVM读取到
RUNTIME:当前被描述的注解,会保留到class字节码文件中,并被JVM读取到(自定义注解一般都使用RUNTIME)- @Documented:描述注解是否会被抽取到api文档中
- @Inherited:描述注解是否被子类继承
5|0解析注解
在程序中使用(解析)注解:获取注解中定义的属性值
- 获取注解定义位置(类,方法,成员变量)的对象
- 获取指定的注解
getAnnotation(自定义注解.class)- 调用注解中的抽象方法获取配置的属性值
案例:使用自定义注解,加载配置,并运行程序
- 创建类和方法待用
- 自定义注解
- 使用注解加载配置
- 运行结果:
6|0练习
- 自定义注解
- 创建一个类,待测试
- 简易测试框架
- 运行结果:加了@Check注解的方法,有3个运行正常
- 日志记录
7|0总结
- 一般我们会使用注解,而不是自定义注解
- 注解用在哪里?
编译器
给解析程序用- 注解不是程序的一部分,而是一个标签
8|0拓展
小贴士
- 编译命令:javac **.java
- 反编译命令:javap **.class
- 生成api文档命令:Javadoc **.java
- 接口中的方法都是抽象方法
- 定义常量时,可以设置默认值:String name() default "abc"
枚举
- 定义枚举时要使用Enum关键字;
- 命名时类名尽量要带Enum , 常量全部大写,多个单词之间用_分割;
- 枚举是一种特殊的常量类;
- 默认的构造方法必须是私有的;
- 枚举里的常量相当于枚举对象;
- 常量之间用逗号分隔,用分号结尾。
__EOF__

本文作者:茶碗儿
本文链接:https://www.cnblogs.com/chawaner/p/17378831.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/chawaner/p/17378831.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix