当前位置: 首页 > news >正文

【Java】Spring的ReflectionUtils类常用方法学习笔记

目录

ReflectionUtils介绍

常用方法

访问字段

方法调用

处理回调

示例


脑容量不够了,以简单的小知识作为一天的结尾吧(悲

ReflectionUtils介绍

ReflectionUtils是Spring Framework中非常实用的一个工具类,为开发人员提供了简便的反射操作方法,使得处理反射相关任务变得更加高效和便捷。

常用方法

访问字段

1.ReflectionUtils.findField:

  • 介绍:该方法用于在类的继承层次结构中查找指定名称的字段,并返回该字段对象。
  • 示例:
public class MyClass {private String name;// getter and setter
}Field field = ReflectionUtils.findField(MyClass.class, "name");
System.out.println("Field name: " + field.getName());

2.ReflectionUtils.setField:

  • 介绍:该方法用于设置指定对象的指定字段的值。
  • 示例:
public class MyClass {private String name;// getter and setter
}MyClass obj = new MyClass();
Field field = ReflectionUtils.findField(MyClass.class, "name");
ReflectionUtils.setField(field, obj, "Alice");
System.out.println(obj.getName());

方法调用

3.ReflectionUtils.findMethod:

  • 介绍:该方法用于在类的继承层次结构中查找指定名称和参数类型的方法,并返回该方法对象。
  • 示例:
public class MyClass {public void greet(String name) {System.out.println("Hello, " + name + "!");}
}Method method = ReflectionUtils.findMethod(MyClass.class, "greet", String.class);
System.out.println("Method name: " + method.getName());

4.ReflectionUtils.invokeMethod:

  • 介绍:该方法用于调用指定对象的方法。可以传递方法名和参数值进行调用。
  • 示例:
public class MyClass {public void greet(String name) {System.out.println("Hello, " + name + "!");}
}MyClass obj = new MyClass();
ReflectionUtils.invokeMethod(ReflectionUtils.findMethod(MyClass.class, "greet", String.class), obj, "John");

处理回调

5.ReflectionUtils.doWithFields:

  • 介绍:该方法遍历类的所有字段并对其执行指定的操作。可以使用lambda表达式来定义具体的操作。
  • 示例:
public class MyClass {private String name;private int age;// getters and setters
}ReflectionUtils.doWithFields(MyClass.class, field -> {System.out.println("Field name: " + field.getName());
});

6.ReflectionUtils.doWithMethods:

  • 介绍:该方法遍历类的所有方法并对其执行指定的操作。可以使用lambda表达式来定义具体的操作。
  • 示例:
public class MyClass {public void sayHello() {System.out.println("Hello!");}// other methods
}ReflectionUtils.doWithMethods(MyClass.class, method -> {if (method.getName().startsWith("say")) {method.invoke(new MyClass());}
});

示例

MethodInvokeTypeProvider#readObject

private void readObject(ObjectInputStream inputStream) throws IOException, ClassNotFoundException {inputStream.defaultReadObject();Method method = ReflectionUtils.findMethod(this.provider.getType().getClass(), this.methodName);this.result = ReflectionUtils.invokeMethod(method, this.provider.getType());
}

这段代码调用了 ReflectionUtils 先是 findMethod 返回 Method 对象然后紧接着调用 invokeMethod 反射调用。注意,这里的调用是无参调用

相关文章:

【Java】Spring的ReflectionUtils类常用方法学习笔记

目录 ReflectionUtils介绍 常用方法 访问字段 方法调用 处理回调 示例 脑容量不够了,以简单的小知识作为一天的结尾吧(悲 ReflectionUtils介绍 ReflectionUtils是Spring Framework中非常实用的一个工具类,为开发人员提供了简便的反射操作方法&am…...

内存函数详解

1. memcpy函数 void * memcpy ( void * destination, const void * source, size_t num ); 1.1 函数的功能,使用与注意事项 1. memcpy函数的作用是内存拷贝,即将source指向的空间中的num个字节拷贝到destination指向的空间中去,然后返回de…...

事务(transaction)

事务,什么是事务,事务就是由单独单元的一个或多个sql语句组成,在这个单元中,每个sql语句都是相互依赖的。而整个单独单元是作为一个不可分割的整体存在,类似于物理当中的原子(一种不可分割的最小单位&#…...

Linux之cd、pwd、mkdir 命令

cd命令,切换目录 1)当Linux终端(命令行)打开的时候,会默认以用户的HOME目录作为当前的工作目录。 2)我们可以通过cd命令,更改当前所在的工作目录。 3)cd命令来自英文:C…...

【python高级编程教程】笔记(python教程、python进阶)第三节:(1)多态与鸭子类型(Polymorphism and Duck Typing)

参考文章1:【比刷剧还爽】清华大佬耗时128小时讲完的Python高级教程!全套200集!学不会退出IT界! 参考文章2:清华教授大力打造的Python高级核心技术!整整100集,强烈建议学习(Python3…...

学习JAVA的第十五天(基础)

目录 数据结构 二叉树 二叉查找树 平衡二叉树 红黑树 Set系列集合 HashSet集合 LinkedHashSet集合 TreeSet集合 前言:学习JAVA的第十四天(基础)-CSDN博客 数据结构 二叉树 元素:结点&am…...

LVS四层负载均衡集群

简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,终端互联网用户从外部访…...

【pyinstaller打包记录】程序使用多进程,打包后,程序陷入死循环

简介 PyInstaller 是一个用于将 Python 程序打包成可执行文件(可执行程序)的工具。它能够将 Python 代码和其相关的依赖项(包括 Python 解释器、依赖的模块、库文件等)打包成一个独立的可执行文件,方便在不同环境中运行…...

MAC | linux | SSH 密钥验证

SSH密钥登陆过程 客户端通过ssh-keygen生成自己的公钥和私钥。手动将客户端的公钥放入远程服务器的指定位置。客户端向服务器发起 SSH 登录的请求。服务器收到用户 SSH 登录的请求,发送一些随机数据给用户,要求用户证明自己的身份。客户端收到服务器发来…...

【AI Agent系列】【MetaGPT多智能体学习】3. 开发一个简单的多智能体系统,兼看MetaGPT多智能体运行机制

本系列文章跟随《MetaGPT多智能体课程》(https://github.com/datawhalechina/hugging-multi-agent),深入理解并实践多智能体系统的开发。 本文为该课程的第四章(多智能体开发)的第一篇笔记。主要记录下多智能体的运行…...

机器学习-面经(part7、无监督学习)

机器学习面经系列的其他部分如下所示: 机器学习-面经(part1) 机器学习-面经(part2)-交叉验证、超参数优化、评价指标等内容 机器学习-面经(part3)-正则化、特征工程面试问题与解答合集机器学习-面经(part4)-决策树共5000字的面试问题与解答…...

teknoparrot命令行启动游戏

官方github cd 到teknoparrot解压目录 cd /d E:\mn\TeknoParrot2_cp1\GameProfiles启动游戏 TeknoParrotUi.exe --profile游戏配置文件游戏配置文件位置/UserProfiles,如果UserProfiles文件夹里没有那就在/GameProfiles,在配置文件里将游戏路径加入之间,或者打开模拟器设置 …...

停止Tomcat服务的方式

运行脚本文件停止 运行Tomcat的bin目录中提供的停止服务的脚本文件 关闭命令 # sh方式 sh shutdown.sh# ./方式 ./shutdown.sh操作步骤 运行结束进程停止 查看Tomcat进程,获得进程id kill进程命令 # 执行命令结束进程 kill -9 65358 操作步骤 注意 kill命令是…...

多线程相关面试题(2024大厂高频面试题系列)

1、聊一下并行和并发有什么区别? 并发是同一时间应对多件事情的能力,多个线程轮流使用一个或多个CPU 并行是同一时间动手做多件事情的能力,4核CPU同时执行4个线程 2、说一下线程和进程的区别? 进程是正在运行程序的实例&#xff…...

mysql 时间精度问题

timestamp到2038年,还有14年时间,一个系统如果能活到那一刻也是相当不错了。 这里先看一下个datetime的问题,下面的插入数据的时间戳是2024-03-06 21:20:50.839 INSERT INTO psi_io_balance ( id, as_id, bill_date, order_id, busi_type, direction, c…...

基于python的爬虫原理和管理系统实现(代码下载)

Python实现爬虫的原理如下: 发送请求:使用Python中的库,如Requests或urllib,向目标网站发送HTTP请求,获取网页的内容。 解析网页:使用Python中的库,如BeautifulSoup或lxml,对获取的…...

IOS 设置UIViewController为背景半透明浮层弹窗,查看富文本图片详情

使用场景&#xff1a;UIViewController1 打开 UIViewController2&#xff08;背景半透明弹窗&#xff09; 案例&#xff1a;打开富文本网页<img>图片的url查看图片详情 WKWebView WKNavigationDelegate代理方法设置js代码点击事件 ///注册添加图片标签点击js方法 - …...

网络层介绍

网络层是OSI模型中的第三层&#xff0c;也称为网络协议层。它主要负责在源主机和目标主机之间提供数据通信的路径选择和控制。网络层通过使用源和目标主机的网络地址来实现数据包的路由和转发。 以下是网络层的一些主要功能&#xff1a; 路由选择&#xff1a;网络层使用路由选…...

springboot/ssm酒店客房管理系统Java在线酒店预约预定平台web

springboot/ssm酒店客房管理系统Java在线酒店预约预定平台web 基于springboot(可改ssm)vue项目 开发语言&#xff1a;Java 框架&#xff1a;springboot/可改ssm vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;…...

分布式测试插件 pytest-xdist 使用详解

使用背景&#xff1a; 大型测试套件&#xff1a;当你的测试套件非常庞大&#xff0c;包含了大量的测试用例时&#xff0c;pytest-xdist可以通过并行执行来加速整体的测试过程。它利用多个进程或计算机的计算资源&#xff0c;可以显著减少测试执行的时间。高计算资源需求&#…...

【S32K3 MCAL配置】-1.1-GPIO配置及其应用-点亮LED灯(基于MCAL)

目录(共13页精讲,手把手教你S32K3从入门到精通) 实现的架构:基于MCAL层 前期准备工作: 1 创建一个FREERTOS工程...

【软件工程】软件工程定义、软件危机以及软件生命周期

&#x1f338;博主主页&#xff1a;釉色清风&#x1f338;文章专栏&#xff1a;软件工程&#x1f338; 今日语录&#xff1a;What matters isn’t how others think of your ambitions but how fervently you cling to them. 软件工程系列&#xff0c;主要根据老师上课所讲提及…...

24计算机考研深大经验分享(计算机专业考研综合安排)

文章目录 背景科目选择高数选课一轮二轮冲刺阶段 线代一轮二轮 概率论计算机学科专业基础408数据结构计算机组成原理操作系统计算机网络总结 英语政治 末言 背景 首先贴一下初试成绩。这篇分享主要是给零基础的同学使用的&#xff0c;基础好的同学可以自行了解补充一下&#xf…...

【知识整理】MySQL数据库开发设计规范

一、规范背景与目的 MySQL数据库与 Oracle、 SQL Server 等数据库相比&#xff0c;有其内核上的优势与劣势。我们在使用MySQL数据库的时候需要遵循一定规范&#xff0c;扬长避短。 本规范旨在帮助或指导RD、QA、OP等技术人员做出适合线上业务的数据库设计。在数据库变更和处理…...

Vue自定义组件实现v-model

前言 v-model 实际上就是 $emit(input) 以及 props:value 的组合语法糖。 1.封装自定义组件 要在 Vue 中实现自定义组件的 v-model 功能&#xff0c;你可以通过使用 model 选项来定义组件的 prop 和事件。以下是一个示例代码&#xff0c;演示如何实现一个自定义组件并使用 v…...

【Linux】Linux网络故障排查与解决指南

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Linux ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 检查网络连接状态&#xff1a; 检查路由表&#xff1a; 检查DNS配置&#xff1a; 检查网络连接状态&#xff1a; 检查防火墙设…...

跟着cherno手搓游戏引擎【27】升级2DRenderer(添加旋转)

水节&#xff0c;添加了旋转的DrawQuad&#xff1a; Renderer2D.h: #pragma once #include "OrthographicCamera.h" #include"Texture.h" namespace YOTO {class Renderer2D{public://为什么渲染器是静态的&#xff1a;static void Init();static void …...

中医舌苔笔记

舌诊时按照舌尖-舌中-舌根-舌侧的顺序进行观察。 先看舌体再看舌苔&#xff0c;30秒左右。 如果一次望舌判断不清&#xff0c;可令病人休息3~5分钟后&#xff0c;重新观察一次 舌诊脏腑部位分属图 舌体 胖嫩而边有齿痕为气虚、阳虚。 薄白而润为风寒&#xff1b; 薄白而燥…...

Facebook的社交未来:元宇宙时代的数字共融

引言&#xff1a; 随着科技的不断进步和社会的快速发展&#xff0c;人们对于社交网络的需求和期待也在不断演变。在这个数字化时代&#xff0c;元宇宙的概念逐渐引发了人们对社交体验的重新思考。作为全球最大的社交网络之一&#xff0c;Facebook正在积极探索元宇宙时代的社交…...

2024护网面试题精选(一)

0x00.基础漏洞篇 00-TOP10漏洞 1.SQL注入 2.失效的身份认证和会话管理 3.跨站脚本攻击XSS 4.直接引用不安全的对象 5.安全配置错误 6.敏感信息泄露 7.缺少功能级的访问控制 8.跨站请求伪造CSRF 9.实验含有已知漏洞的组件 10.未验证的重定向和转发 01-SQL注入漏洞 …...