java 使用反射动态赋值_java反射给字段赋值-程序员宅基地

技术标签: # Java-开发日常  反射  

在开发数据解析的功能时,会有将目标数据解析到多个字段中的场景,比如将以下的数据解析入库:

public class UserTo implements Serializable {
    private static final Long serialVersionUID = 1L;
    private String name;
    private String age;
    private String score;
}
String str = "name:zhangsan,age:30,score:100";

常规做法是

user.setAge(str.split(",")[0].split(":")[1]);
user.setName(str.split(",")[1].split(":")[1]);
user.setScore(str.split(",")[2].split(":")[1]);

当字段较多或者字段变更比较频繁的时候,可以使用反射获取实体属性,动态赋值:

public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchFieldException {
        String str = "name:zhangsan,age:30,score:100";
        Class c1 = Class.forName("com.model.UserTo");
        UserTo user = (UserTo) c1.newInstance();
        String[] arr = str.split(",");
        for(String arrStr : arr){
            Field item = c1.getDeclaredField(arrStr.split(":")[0]);
            item.setAccessible(true);
            item.set(user,arrStr.split(":")[1]);
        }
        System.out.println(JSON.toJSONString(user));
    }

这样做的好处:

1.更加轻量,后续字段增多了不需要重复开发,只要确保表字段和来源数据一致即可,省去重新开发的

2.代码简洁,容易维护

缺点:

1.字段如果有二次加工不太方便

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/leo187/article/details/124400414

智能推荐

xp计算机安全设置在哪里,WinXP如何进入安全模式?WinXP进入安全模式设置-程序员宅基地

文章浏览阅读3.4k次。相信有很多人都知道,安全模式是Windows操作系统中的一种特殊模式,每当操作系统中出现错误,只要在安全模式下,就可以很轻松的修复操作系统出现的错误。对于经常使用电脑的用户来讲,如何进入安全模式可以说是小菜一碟,但对于很少使用电脑的用户来讲,就有点困难了。下面,针对这一问题,小编这就来教教大家WinXP进入安全模式的方法。方法/步骤1、如果不能进入正常系统,开机后,可以到系统选项界面时,直接按F8..._xp怎么进入安全模式

2019北邮计算机考研大纲,2019年北京邮电大学802电子电路考研大纲-程序员宅基地

文章浏览阅读173次。802 电子电路模拟部分一、考试要求要求学生系统地掌握模拟电子技术的基本概念、基本电路的工作原理和基本分析方法,并能灵活应用于实际,具有较强的分析问题与解决问题的能力。二、考试内容1、了解PN结及其特性;掌握常用二极管、双极型晶体管及场效应管的特性和主要参数。2、掌握双极型晶体管组成的三种基本组态电路的特点和基本分析方法;了解场效应管放大电路。3、了解多级放大电路的常用耦合方式,掌握多级放大电路的..._北邮计算机考研大纲

sftp shell 批量上传文件_浅析Suse中的sftp批量传送文件-程序员宅基地

文章浏览阅读246次。我学习Suse经常的遇到一些问题,喜欢总结一下,就这样知识就慢慢的积累起来了,前两天我想传一些文件,可在Suse中我不会去操作,于是我上网找了一下,就学会了在shell脚本里使用sftp批量传送文件,希望看完本文之后你能过学会在shell脚本里使用sftp批量传送文件。主要步骤如下:1.为运行shell脚本的本地用户生成密钥对2.将其中的公钥分发到sftp欲登录的远程服务器上3.编写并以上面的本地..._批量sftp传文件

def __init__(self):-程序员宅基地

文章浏览阅读1.9k次。def __init__(self): 是一个Python类中的构造函数,用于创建类的实例时初始化该实例的属性。在构造函数中,self是一个指向类的实例本身的引用,可以用它来访问和设置该实例的属性。构造函数的名称是固定的,不能更改,而且第一个参数必须是self。..._def __init__(self):

OpenCV拷贝与ROI_opencv a(rect).copyto(b.rect())-程序员宅基地

文章浏览阅读1.6k次。OpenCV的Mat变量之间拷贝分浅拷贝和深拷贝(由于3.0以后对IplImage变量不再使用,所以这里仅考虑Mat变量)一. 浅拷贝Mat a;Mat b = a; //a "copy" to bMat c(a); //a "copy" to c注意:浅拷贝不复制数据只创建矩阵头,实现数据共享,更改a, b, c三个变量中的任意一个都会对另外2个产生同样的作用。_opencv a(rect).copyto(b.rect())

【Win10】蓝屏“选择一个选项”,关机重启均无法进入系统解决方案-程序员宅基地

文章浏览阅读4.2w次,点赞35次,收藏166次。参考文章:https://zhuanlan.zhihu.com/p/140922138https://blog.csdn.net/Andrew_clovers/article/details/106139827https://www.pianshen.com/article/89412024098/_选择一个选项

随便推点

音乐标签修改 android,mp3标签-mp3标签修改器 安卓版v4.0-PC6安卓网-程序员宅基地

文章浏览阅读2k次。标签编辑器 mp3 Tag Editor可以快速的帮你修改MP3里面的标签乱码,主要是MP3乱码太多会使得MP3文件体积变大,也可以修正歌曲的信息。官方介绍《MP3标签编辑器 MP3 Tag Editor》是一款生活应用,可以帮助您编辑MP3里的ID3标签(标题,歌手,专辑,类型,曲目)。此外,它还可以快速的帮助您修正在繁体中文,简体中文,日文和韩文MP3中的标签乱码。软件功能可以删除多余的Mp3..._android 修改mp3歌曲详细信息实现

Linux端口被占用怎么解决-程序员宅基地

文章浏览阅读457次。Linux端口被占用怎么解决

Android.mk 文件 之 入门语法介绍_.mk文件的语法-程序员宅基地

文章浏览阅读211次。一、Android.mk介绍Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名、引用的头文件目录、需要编译的.c/.cpp文件和.a静态库文件等。要掌握jni,就必须熟练掌握Android.mk的语法规范。它的基本格式如下:LOCAL_PATH:=$(callmy-dir) include$(CLEAR_VARS) ..._.mk文件的语法

C++primer plus习题+答案_c++primer plus 复习题答案-程序员宅基地

文章浏览阅读1.2k次。类是用户定义的类型的定义。类声明指定了数据将如何存储,同时指定了用来访问和操纵这些数据的方法(类成员函数)_c++primer plus 复习题答案

通知服务的使用问题_java注册完服务如何通知其他服务 site:blog.csdn.net-程序员宅基地

文章浏览阅读205次。1.服务大多数和通知一起,然后关键问题是PendingIntent的使用对于App demo,启动的一个类,竟然没有把整个屏幕覆盖,这不合理啊。自己试验没有这个问题。由于服务不会自己停止,我们要手动停止服务。服务生命周期重点还是绑定服务,以及服务和活动的通信啊。加油。_java注册完服务如何通知其他服务 site:blog.csdn.net

2019.11.零散笔记_搜索系统:项目内容,通过网站爬虫爬取网站数据,然后基于klastlcseard和klbana搭建-程序员宅基地

文章浏览阅读282次。《精益创业》一书对 MVP 和迭代思维有比较好的讲解,可以看看。PS:有篇老外写的关于 MVP 的文章不错,其中的配图被到处使用。可能需要翻墙:Making sense of MVP (Minimum Viable Product) - and why I prefer Earliest Testable/Usable/LovableApache Flink 零基础入门教程h..._搜索系统:项目内容,通过网站爬虫爬取网站数据,然后基于klastlcseard和klbana搭建