【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可以通过并行执行来加速整体的测试过程。它利用多个进程或计算机的计算资源,可以显著减少测试执行的时间。高计算资源需求&#…...
Java中调用PyTorch模型总失败?深度解析JNI桥接、序列化协议与内存泄漏的4重陷阱
第一章:Java AI 推理引擎集成示例在 Java 生态中集成 AI 推理能力,关键在于选择轻量、可嵌入且支持主流模型格式的推理引擎。本章以 Deep Java Library (DJL) 为例,演示如何在标准 Java 应用中加载 ONNX 模型并执行文本分类推理。环境准备与依…...
Fastfetch:超越 Neofetch 的系统信息获取新利器
【导语:Fastfetch 作为一款类似 neofetch 的工具,以 C 语言编写,注重性能与可定制性,支持多平台。它在速度、功能、准确性等方面超越竞品,为用户带来全新系统信息获取体验。】多平台适配的系统信息工具Fastfetch 是一款…...
3大核心技术突破:MediaPipeUnityPlugin如何重塑Unity AI视觉开发边界?
3大核心技术突破:MediaPipeUnityPlugin如何重塑Unity AI视觉开发边界? 【免费下载链接】MediaPipeUnityPlugin Unity plugin to run MediaPipe 项目地址: https://gitcode.com/gh_mirrors/me/MediaPipeUnityPlugin MediaPipeUnityPlugin作为连接G…...
从电动车痛点出发:双三相永磁电机如何靠‘弱磁’跑得更远更快?(深入对比凸极与隐极设计)
双三相永磁电机弱磁控制技术:破解电动车高速性能瓶颈的工程实践 电动车的高速巡航与急加速能力一直是用户关注的焦点,而永磁同步电机(PMSM)的弱磁控制技术正是解锁这一性能的关键。不同于传统三相电机,双三相永磁同步…...
AMP实战:对抗运动先验在物理驱动角色控制中的风格化应用
1. AMP框架如何革新角色动作控制 想象一下你在玩一款开放世界游戏,主角需要从悬崖边缘精准跳到对面平台。传统动画系统可能会直接播放预设的跳跃动画,但物理引擎计算发现距离不够时,就会出现角色悬空滑行的诡异画面。这正是AMP(Ad…...
【Matlab】MATLAB教程:拟合效果评估(案例:计算R²、残差;应用:量化评估拟合质量)
MATLAB教程:拟合效果评估(案例:计算R、残差;应用:量化评估拟合质量) 在实验数据分析、工程建模、科研拟合等场景中,很多人完成曲线拟合后,仅凭肉眼观察曲线是否“贴近数据”就判断拟合效果好坏,这种方式极具主观性:看似平滑的曲线,可能存在较大隐性误差;看似贴合局…...
别再只用3x3卷积了!手把手教你为YOLOv8定制任意形状的卷积核(AKConv保姆级教程)
突破传统卷积限制:AKConv在YOLOv8中的创新实践 卷积神经网络(CNN)作为计算机视觉领域的基石,其核心组件卷积操作的设计直接影响着模型性能。传统33卷积虽然广泛应用,但在处理非规则形状目标时存在明显局限性。本文将深…...
告别OpenAI依赖:用智谱AI与轻量本地模型构建RAG评估实战
1. 为什么需要替代OpenAI的RAG评估方案 当我们在构建RAG(检索增强生成)系统时,评估环节至关重要。传统的Ragas框架默认使用OpenAI的GPT模型进行评估,但这会带来几个实际问题: 首先是访问稳定性问题。由于网络环境差异…...
51单片机之按键控制RGB灯
51单片机之按键控制RGB灯描述:利用KEIL5编程,使AT89C52通过按键输入控制RGB灯显示不同颜色。硬件:电路仿真图(未运行)电路仿真图(运行)程序:主要是按键消抖,机械按键按下…...
【花雕学编程】Arduino BLDC 之 AI 迷你小龙虾 MimiClaw 自主闭环控制机器人(带传感器反馈)
从工程视角来看,基于Arduino、使用互补滤波进行姿态控制的BLDC(无刷直流电机)机器人,是一个典型的嵌入式实时闭环控制系统。它集成了传感器数据融合、控制算法和电机驱动,广泛应用于对姿态稳定性有要求的场景。关于 Mi…...
