自定义BeanUtils的populate方法实现「建议收藏」

自定义BeanUtils的populate方法实现「建议收藏」1.1.1功能分析publicstaticvoidpopulate(Objectbean,Mapmap)//修改任意对象中的属性,为传入Map集合中的键和值思路:1.获取传入对象的字节码对象2.获取map集合中所有的键和值3.调用Class中的getDecl…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1.1.1 功能分析

public static void populate(Object bean,Map map)

                                // 修改任意对象中的属性, 为传入Map集合中的键和值

                思路:

1. 获取传入对象的字节码对象

2. 获取map集合中所有的键和值

3. 调用Class中的getDeclaredField()方法将每一个键传入, 得到Field对象

4. 通过Field对象中的set方法赋值

5. Try catch捕获getDeclaredField方法可能发生的异常.(为了方式传入错误的值)

1.1.2 实例代码

//public static void populate(Object bean,Map map)
 
public static void populate(Object bean,Map map) throws ReflectiveOperationException {
 
//通过JavaBean对象来获取对应的字节码对象
 
Class clazz = bean.getClass();
 
//获取Map中所有的key
 
Set keys = map.keySet();
 
for (Object key : keys) {
 
 
try {
 
//根据key来获取对应的Field对象
 
Field f = clazz.getDeclaredField(key.toString());
 
//根据key来获取Map中对应的value
 
Object value = map.get(key);
 
 
f.setAccessible(true);
 
f.set(bean, value);
 
} catch(NoSuchFieldException e) {
 
//e.printStackTrace();
 
}
 
}
 
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158753.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 解决centos镜像下载太慢问题[通俗易懂]

    解决centos镜像下载太慢问题[通俗易懂]Centos镜像下载https://wiki.centos.org/Download

    2022年5月26日
    34
  • 9iDataGurad报ORA12154TNScouldnotresolveservicename

    9iDataGurad报ORA12154TNScouldnotresolveservicename原9iDataGurad报ORA-12154:TNS:couldnotresolveservicename错误https://blog.csdn.net/tianlesoftware/article/details/4875026版权声明:https://blog.csdn.net/tianlesoftware/article/details/4875026平台:or…

    2022年7月19日
    11
  • 简单LMDB用法_法语简单过去时用法

    简单LMDB用法_法语简单过去时用法装载请注明出处

    2022年9月29日
    3
  • JAVA之文件操作[通俗易懂]

    JAVA之文件操作[通俗易懂]Console此类包含多个方法,可访问与当前Java虚拟机关联的基于字符的控制台设备(如果有)。虚拟机是否具有控制台取决于底层平台,还取决于调用虚拟机的方式。如果虚拟机从一个交互式命令行开始启动,且没有重定向标准输入和输出流,那么其控制台将存在,并且通常连接到键盘并从虚拟机启动的地方显示。如果虚拟机是自动启动的(例如,由后台作业调度程序启动),那么它通常没有控制台。如果此虚拟机具

    2025年7月17日
    3
  • 语音信号处理分类

    语音信号处理分类人与人之间的通信:语音压缩与编码压缩语音信号的传输带宽或者降低电话信道的传输码率解释:比特率=位深X采样率X信道个数,比特率越高,还原度越高,速度越慢。所以降低编码比特率,可以节省频率资源。第一类人与机器之间的通信:语音合成机器讲话,人接听文语转换(TTS)系统,主要关注可理解度,自然度,可懂度,逼真度(情感语音合成)第二类人与机器之间的通信:语音识别人讲话,机器接…

    2022年5月26日
    41
  • ajax的data传参的两种方式

    ajax的data传参的两种方式

    2021年10月11日
    64

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号