Java自定义注解
一、注解:
我们可以通过定义注解,使用注解来方便地调用某些数据。
二、java内建注解:
比如@override、@deprecated等,重写方法时会使用@override,而当某些类或方法已经被摒弃时则会出现 @deprecated
三、元注解:
元注解的作用就是负责注解其他注解。
包括@Target、@Inherited、@Retention、@Documented
@Target:表明Annotation的使用范围,包括类、方法、属性等
@Inherited:表明父类的注解可以被子类继承
@Retention:指定Annation的存在范围
@Documented:在生成java doc时可以写入文档说明
其中,Target范围如下:
而Retention范围如下:
四、自定义Annotation
Annotation用@interface来定义.
格式如下:
public @interface Annotation 名称{ 修饰符 数据类型 变量名称(); }
也可以在定义时直接用default指定默认值。
五、解析Annotation
而想取得Annotation的值,需要使用反射机制。
解析Annotation的相关api如下所示:
示例如下:
MyAnnotation.java :
import java.lang.annotation.Documented; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @Inherited @Retention(value = RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.TYPE}) //表示该注解,既可以用到字段上,也可以用到类上面。 @Documented public @interface MyAnnotation { public String name(); public String job() default "programer"; }
Person.java :
@MyAnnotation(name = "lin") public class Person {
//getter 、 setter }
AnnotationTest.java :
/** 通过反射获取Annotations的值 */ public class AnnotationTest { public static void main(String[] args) throws Exception { Class<?> personClass=Person.class;
//判断Person类上面,有没有MyAnnotation.class这个注解
if(personClass.isAnnotationPresent(MyAnnotation.class)) {
//获取注解
MyAnnotation annotation=personClass.getAnnotation(MyAnnotation.class);
String name=annotation.name();
String job=annotation.job();
System.out.println("name:"+name);
System.out.println("job:"+job);
} } }
参考资料:
《java开发实战经典》
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了