<导航

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

 

posted @ 2019-11-02 19:46  字节悦动  阅读(197)  评论(0编辑  收藏  举报