JAVA注解 JAVA自定义注解

2025-04-22 01:42:25

1、语法:@Target({ElementType.FIELD}) //作用目标@Retention(RetentionPolicy.RUNTIME) //保留@Inherited //允许子类继承,可以不加@Documented //注解应该被 javadoc工具记录,可以不加public @interface ChineseName { public String value();}

JAVA注解 JAVA自定义注解

2、作用目标ElementType.CONSTRUCTOR 构造方法声明ElementType.FIELD 字段声明ElementType.LOCAL_VARIABLE 局部变量申明ElementType.METHOD 方法声明ElementType.PACKAGE 包声明ElementType.PARAMETER 参数声明ElementType.TYPE 类接口

JAVA注解 JAVA自定义注解

3、保留RetentionPolicy.SOURCE 只在源码显示,编译时会丢弃RetentionPolicy.CLASS 编译时会记录到class中,运行时忽RetentionPolicy.RUNTIME 运行时存在,可以通过发射读取

JAVA注解 JAVA自定义注解

4、这里以注解作用目标在属性上,运行时存在

JAVA注解 JAVA自定义注解

5、新增一个Person实体,将注解放在name上

JAVA注解 JAVA自定义注解

6、通过反射获取注解值

JAVA注解 JAVA自定义注解

7、关键代码@Target({Element哌囿亡噱Type.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()); }

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢