【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、说一下线程和进程的区别? 进程是正在运行程序的实例ÿ…...
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为背景半透明浮层弹窗,查看富文本图片详情
使用场景:UIViewController1 打开 UIViewController2(背景半透明弹窗) 案例:打开富文本网页<img>图片的url查看图片详情 WKWebView WKNavigationDelegate代理方法设置js代码点击事件 ///注册添加图片标签点击js方法 - …...
网络层介绍
网络层是OSI模型中的第三层,也称为网络协议层。它主要负责在源主机和目标主机之间提供数据通信的路径选择和控制。网络层通过使用源和目标主机的网络地址来实现数据包的路由和转发。 以下是网络层的一些主要功能: 路由选择:网络层使用路由选…...
springboot/ssm酒店客房管理系统Java在线酒店预约预定平台web
springboot/ssm酒店客房管理系统Java在线酒店预约预定平台web 基于springboot(可改ssm)vue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:…...
分布式测试插件 pytest-xdist 使用详解
使用背景: 大型测试套件:当你的测试套件非常庞大,包含了大量的测试用例时,pytest-xdist可以通过并行执行来加速整体的测试过程。它利用多个进程或计算机的计算资源,可以显著减少测试执行的时间。高计算资源需求&#…...
Formation:macOS前端开发环境一键配置终极指南
Formation:macOS前端开发环境一键配置终极指南 【免费下载链接】formation 💻 macOS setup script for front-end development 项目地址: https://gitcode.com/gh_mirrors/fo/formation Formation是一款专为macOS设计的前端开发环境配置脚本&…...
串口屏三大主流方案的多维度比较
全球串口屏市场正处于稳步增长通道。据行业研究机构数据,2025年全球串口屏市场规模约6.0亿美元,预计到2030年将增长至6.9亿美元,年复合增长率约5.6%。越来越多的中小设备制造商面临同一个问题:如何在预算和开发周期内,…...
OpenPLC Editor:零成本开启工业自动化编程的完整解决方案
OpenPLC Editor:零成本开启工业自动化编程的完整解决方案 【免费下载链接】OpenPLC_Editor 项目地址: https://gitcode.com/gh_mirrors/ope/OpenPLC_Editor 在工业自动化领域,PLC编程一直被视为专业工程师的专属技能,高昂的商业软件许…...
基于雪崩晶体管设计2ns快速边沿脉冲发生器:原理、实现与调试
1. 项目概述与核心价值在射频、高速数字电路测试,甚至是核物理、激光雷达的前沿实验中,我们常常会遇到一个令人头疼的问题:市面上能买到的标准脉冲信号源,其输出脉冲的上升时间(Rise Time)往往在几十纳秒甚…...
别再傻傻重启了!用JRebel给IDEA装上‘秒级热更新’,Spring Boot开发效率翻倍
告别低效重启:用JRebel解锁Spring Boot开发的终极热更新体验 每次修改几行代码就要等待漫长的应用重启?Spring Boot DevTools的热加载功能已经无法满足你对开发效率的极致追求?作为长期奋战在Java开发一线的工程师,我深知这种重复…...
从零到告警:用Prometheus+SNMP监控华为交换机,并配置Grafana看板与告警规则
从零构建华为交换机智能监控体系:PrometheusSNMP实战指南 当机房里的华为交换机突然宕机时,运维团队往往要面对业务部门的连环追问。传统的人工巡检方式就像用体温计量火山喷发——既滞后又无力。本文将手把手带您搭建从数据采集到告警响应的完整监控闭环…...
32dB增益+79%效率:HT20340S在工业射频能源中的高能效设计
HT20340S:400W LDMOS宽带射频功率放大器在大功率射频能量应用、工业加热、等离子体激励以及宽带通信等领域,功率放大器(PA)的性能直接决定了系统的发射效率与作用距离。当需要在10MHz至300MHz的宽带范围内实现数百瓦的连续波输出时…...
树莓派当机载电脑:搭建Pixhawk无人机与动捕系统的ROS通信桥梁(VRPN/MOCAP_NOKOV双方案)
树莓派作为机载计算机:构建Pixhawk无人机与动作捕捉系统的ROS通信框架 在无人机自主飞行和机器人协同控制领域,高精度的位置反馈是实现稳定控制的基础。传统GPS定位在室内环境中完全失效,而基于光学动作捕捉系统的定位方案能够提供毫米级的精…...
告别RGB控制混乱:用ChromaControl打造统一灯光生态
告别RGB控制混乱:用ChromaControl打造统一灯光生态 【免费下载链接】ChromaControl 3rd party device lighting support for Razer Synapse. 项目地址: https://gitcode.com/gh_mirrors/ch/ChromaControl 你是否曾经面对桌上五颜六色的RGB设备感到困惑&#…...
为什么你的Perplexity总搜不到知网核心期刊?97.6%用户忽略的3个元数据过滤阈值(附知网后台原始字段对照表)
更多请点击: https://intelliparadigm.com 第一章:Perplexity知网文献搜索失效的底层归因 Perplexity.ai 作为一款基于大模型的实时网络问答工具,其核心能力依赖于对公开网页内容的动态抓取与语义解析。然而当用户尝试通过 Perplexity 查询中…...
