Java中如何获取自定义注解并获取其值

前言

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

元注解

@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() 方法拿到其注解值,再通过反射拿到对应的字段的值。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 自定义注解是一种元数据的形式,可以用于为类、方法、字段等程序元素添加额外的信息。通过自定义注解,我们可以在代码添加一些标记或者配置信息,以便在运行时可以进行相应的处理或者获取这些信息。 自定义注解由 `@interface` 关键字来定义,类似于接口的定义方式。在注解可以定义元素,用于存储相应的配置。这些元素可以是基本数据类型、字符串、枚举类型、Class 类型、注解类型或者它们的数组。 自定义注解可以被应用于类、方法、字段等程序元素上,通过在目标元素前加上注解的方式进行标记。在编译时和运行时,我们可以使用反射机制来获取这些注解,并根据注解的信息进行相应的处理。 自定义注解的使用场景很广泛,例如: 1. 标记注解:用于标记某个类或者方法的特定属性,在编译或者运行时可以根据标记进行相应的处理。 2. 配置注解:用于为某个类或者方法提供配置信息,在运行时可以读取这些配置进行相应的逻辑处理。 3. 文档生成注解:用于为代码生成文档,例如 Java Javadoc 注解。 4. 框架扩展注解:用于扩展某个框架的功能,例如 Spring 的一些注解用于实现依赖注入、事务管理等功能。 总之,自定义注解为我们提供了一种灵活、可扩展的方式来为代码添加元数据,以便在运行时进行相应的处理。它是 Java 编程的一个强大工具,可以用于实现各种功能和框架的扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值