【Java】注解的使用
1.注解是什么
这个注解表示该方法是重写的
- jdk 5.0 新增的功能。
- 注解:Annotation,代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,通过使用注解,可以在源文件中嵌入一些补充信息。
- 框架 = 注解 + 反射机制 + 设计模式。
- JavaSE中注解一般用来标记过时的功能,忽略警告等;JavaEE/Android中注解可以用来配置应用程序的切面,代替JavaEE旧版中所遗留的繁冗代码和XML配置等。
2.注解的使用
- 生成doc文档
- 编译时格式检查(jdk内置的)
- @Override:重写父类方法。
- @Deprecated:所修饰的元素(类、方法等)已过时。
- @SuppressWarnings(""):抑制编译警告(null警告、拆箱装箱警告等)
- 跟踪代码依赖性,实现替代配置文件(@Controller、@Resource)
@SuppressWarnings("all") public class AnnoTest01 { @Override public String toString() { return "AnnoTest01{}"; } @Deprecated public void displayTV(){ //过时了,不推荐使用,但可以使用 } public void displayAll(){ //更好的方法 } }
3.元注解
对现有的注解进行解释说明的注解
jdk提供的4种元注解
- @Retention:指定修饰注解的生命周期,该注解被保留到哪个阶段。
- SOURCE:代码阶段有效
- CLASS:会被保留到字节码阶段
- RUNTIME:会被保留到运行阶段
- @Target:指定修饰注解能用于修饰哪些程序元素(方法、属性、构造器...)。
- @Documented:指定修饰的注解在被javadoc解析时保留下来。
- @Inherited:指定修饰的注解具有继承性。
4.自定义注解
- 使用@interface修饰。
- 内部定义成员,通常使用value表示,可以指定默认值。
- 没有成员则表示一个标识作用。
- 通常都会指明两个元注解@Retention、@Target
自定义注解名字叫Hello
@Inherited @Retention(RetentionPolicy.RUNTIME) @Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE}) public @interface Hello { String userName(); int age() default 10; }
使用
@Hello(userName = "张三",age = 50) public class Person { }
5.通过反射获取注解信息
只有声明为RUNTIME生命周期的注解,才能通过反射获取
6.jdk 8中注解的新特性
- 可重复注解:@Repeatable
- 类型注解:@Target中新增类型
- ElementType.TYPE_PARAMETER:表示该注解能卸载类型变量的声明语句中(如泛型声明)。
- ElementType.TYPE_USE:表示该注解能写在使用类型的任何语句中。
想重复使用@Hello注解,自定义两个注解
@Inherited @Retention(RetentionPolicy.RUNTIME) @Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE}) @Repeatable(World.class) public @interface Hello { String userName(); int age() default 10; } @Inherited @Retention(RetentionPolicy.RUNTIME) @Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE}) public @interface World { Hello[] value(); }
使用
public class Person { @Hello(userName = "张三",age = 18) @Hello(userName = "李四",age = 20) public void who(){ } }
参考链接
1.注解@Repeatable详解
分类:
Java / JAVA高级
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本