java通过反射Reflect操作注解Annotation

2024-06-04 22:36

本文主要是介绍java通过反射Reflect操作注解Annotation,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

通过反射获取加在类上的注解

java中可以通过反射来操作注解,可以获得加在类上面的注解,进而获得加在类上面的注解 的配置参数的值。
加在类上面的注解 Table_Annotation 的定义:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@interface Table_Annotation {// value字段。用于指定当前注解修饰的类对应 数据库中的哪个表。String value();
}

实体类:Employee

// 使用注解 Table_Annotation 修饰,value字段指定当前类Employee对应数据库中的表 tb_employee
@Table_Annotation(value = "tb_employee")
class Employee {private int id;private int age;private String name;
}

通过反射,操作加在类Employee上面的注解 Table_Annotation

public static void main(String[] args) throws NoSuchFieldException {// 演示通过反射 获取类上加的注解// 首先,获得 目标类Employee 对应的Class对象Class<Employee> employeeClass = Employee.class;// 其次,通过Class对象获得这个类上的所有注解。当然,此处类上只有一个注解Table_AnnotationAnnotation[] annotations = employeeClass.getAnnotations();System.out.println(Arrays.toString(annotations));// [@reflect_package.Table_Annotation("tb_employee")]// 获得注解对应的value的值// 通过指定注解名的方式获得加在类Employee上面的指定注解Table_Annotation table_annotation = employeeClass.getAnnotation(Table_Annotation.class);// 通过 .value()的方式,获得这个注解加在类Employee上时,对应的valueString value = table_annotation.value();System.out.println(value); // tb_employee}

可以看到,通过反射的方式,获得了加在类Employee上面的注解。进一步,通过指定注解的方式,可以获得加在类上面的指定注解的value字段。从而可以知道类Employee对应的是数据库中的哪张表。

通过反射获取加在字段上的注解

加在类的字段上面的注解 Field_Annotation

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@interface Field_Annotation {// 指示注解 Field_Annotation 修饰的属性 对应数据库中的表中的哪个字段String columnName();// 指示注解 Field_Annotation 修饰的属性 对应字段的属性String type(); // 指示注解 Field_Annotation 修饰的属性 对应字段的长度int length(); 
}

通过反射,操作 加在类Employee 的具体字段 上面的注解 Field_Annotation

public static void main(String[] args) throws NoSuchFieldException {// 首先,获得目标类Employee 的Class对象Class<Employee> employeeClass = Employee.class;// 再通过反射获取指定的字段Field field = employeeClass.getDeclaredField("id");// 其次,通过反射获取加在这个字段上面的指定注解 Field_AnnotationField_Annotation field_annotation = field.getAnnotation(Field_Annotation.class);System.out.println(field_annotation);// @reflect_package.Field_Annotation(columnName="id", type="int", length=10)// 最后:获取加在 类Employee的字段id上面的指定注解 Field_Annotation 的三个参数对应的值System.out.println(field_annotation.columnName()); // idSystem.out.println(field_annotation.type()); // intSystem.out.println(field_annotation.length()); // 10}

可以看到,可以通过 反射获取加在类的指定字段上面的注解,进一步,还可以获得修饰字段的指定注解对应的各个参数属性的值。

这篇关于java通过反射Reflect操作注解Annotation的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1031311

相关文章

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

Java中如何正确的停掉线程

《Java中如何正确的停掉线程》Java通过interrupt()通知线程停止而非强制,确保线程自主处理中断,避免数据损坏,线程池的shutdown()等待任务完成,shutdownNow()强制中断... 目录为什么不强制停止为什么 Java 不提供强制停止线程的能力呢?如何用interrupt停止线程s

SpringBoot请求参数传递与接收示例详解

《SpringBoot请求参数传递与接收示例详解》本文给大家介绍SpringBoot请求参数传递与接收示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录I. 基础参数传递i.查询参数(Query Parameters)ii.路径参数(Path Va

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp

Java MCP 的鉴权深度解析

《JavaMCP的鉴权深度解析》文章介绍JavaMCP鉴权的实现方式,指出客户端可通过queryString、header或env传递鉴权信息,服务器端支持工具单独鉴权、过滤器集中鉴权及启动时鉴权... 目录一、MCP Client 侧(负责传递,比较简单)(1)常见的 mcpServers json 配置

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映