JAVA注解 JAVA自定义注解
注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
作用分类:
①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】
② 代码分析:通过代码里标识的元数据对代码进行分析【使用反射】
③编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查【Override】
语法: @Target({ElementType.FIELD}) //作用目标 @Retention(RetentionPolicy.RUNTIME) //保留 @Inherited //允许子类继承,可以不加 @Documented //注解应该被 javadoc工具记录,可以不加 public @interface ChineseName { public String value();}
作用目标
ElementType.CONSTRUCTOR 构造方法声明
ElementType.FIELD 字段声明
ElementType.LOCAL_VARIABLE 局部变量申明
ElementType.METHOD 方法声明
ElementType.PACKAGE 包声明
ElementType.PARAMETER 参数声明
ElementType.TYPE 类接口
保留
RetentionPolicy.SOURCE 只在源码显示,编译时会丢弃
RetentionPolicy.CLASS 编译时会记录到class中,运行时忽
RetentionPolicy.RUNTIME 运行时存在,可以通过发射读取
这里以注解作用目标在属性上,运行时存在
新增一个Person实体,将注解放在name上
通过反射获取注解值
关键代码 @Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface ChineseName { public String value(); } 测试方法 @Test public void testName() throws Exception { Person person = new Person(); Class clazz = person.getClass(); Field field = clazz.getDeclaredField("name"); ChineseName annotation = field.getAnnotation(ChineseName.class); System.out.println(annotation.value()); }
其他阅读:https://blog.csdn.net/zt15732625878/article/details/100061528
参考文章:https://jingyan.baidu.com/article/a65957f43d5d0324e77f9b50.html