Java中实现自定义注解并获取其值

4,126次阅读次阅读
没有评论

前言

注解是Java在继JDK1.5以及之后版本新增的一大特性,其作用可以用来标识或者值注入等等,在Java中我们常使用JDK自带的注解有@Override@Deprecation@SuppviseWarnings那么要想更加深入了解注解,只有通过自定义注解来进行了解了。 Java中实现自定义注解并获取其值

元注解

在进行自定义注解之前,我们先来了解一下元注解:

@Target说明Annotation所修饰的对象范围

其值有(ElementType{采用数组形式}):

  • CONSTRUCTOR:用于描述构造器
  • FIELD:用于描述域
  • LOCAL_VARIABLE:用于描述局部变量
  • METHOD:用于描述方法
  • PACKAGE:用于描述包
  • PARAMETER:用于描述参数
  • TYPE:用于描述类、接口(包括注解类型)或枚举声明

@Retention说明Annotation的生命周期

其值有(RetentionPolicy):

  • SOURCE:在源文件中有效
  • CLASS:在class文件中有效
  • RUNTIME:在运行时有效

@Documented用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。

@Inherited元注解是一个标记注解,@Inherited说明了某个被标注的类型可以被其子类继承的。

定义

首先,在Java中我们要定义一个注解通过如下方法定义:

public @interface Column{
    String value();
}

并可以在其声明上方定义元注解,例如:

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface Column {
    String value();
}
此时此类只可以用于描述类、接口(包括注解类型)或枚举声明,并且声明周期是运行时有效的。

取值

调用使用了该注解的实例的getClass()方法,然后通过getClass().getAnnotation("注解类名".class)方法拿到用于描述类、接口(包括注解类型)或枚举声明的注解类实例,然后通过value()方法拿到其对应的值。 如果是字段,则通过getDeclaredFields()方法拿到其所有字段,然后foreach循环通过value()方法拿到其注解值,再通过反射拿到对应的字段的值。

后记

若文章中有纰漏或者其他方面的不足,请麻烦在下方评论区指出错误或提出建议,感谢您的支持! Java中实现自定义注解并获取其值

3
憧憬Licoy
版权声明:本站原创文章,由憧憬Licoy2017-03-17发表,共计2099字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
Loading...