JAVA中JavaBean对象之间属性拷贝的⽅法
JAVA中JavaBean对象之间的拷贝通常是⽤get/set⽅法,但如果你有两个属性相同的JavaBean或有⼤部分属性相同的JavaBean,对于这种情况,可以采⽤以下⼏个简便⽅法处理。
下⾯对这⼏个⽅法做⼀下简单介绍,并通过实际的案例测试下性能差异
1.使⽤org.apachemons.pyProperties
2.使⽤org.springframework.pyProperties
3.使⽤lib.py
4.使⽤lib.py
5.使⽤mirror mirror.setValue
6.使⽤⾃写反射
7.使⽤json序列化
⼀. 项⽬依赖
1 <dependencies>
2 <dependency>
3 <groupId>org.springframework</groupId>
4 <artifactId>spring-core</artifactId>
5 <version>5.1.6.RELEASE</version>
6 </dependency>
7 <dependency>
8 <groupId>org.nutz</groupId>
9 <artifactId>nutz</artifactId>
10 <version>1.b.52</version>
11 </dependency>
12 <dependency>
13 <groupId>commons-beanutils</groupId>
14 <artifactId>commons-beanutils</artifactId>
15 <version>1.9.3</version>
16 </dependency>
17 <dependency>
18 <groupId>org.springframework.data</groupId>
19 <artifactId>spring-data-redis</artifactId>
20 <version>2.0.7.RELEASE</version>
21 <exclusions>
22 <exclusion>
23 <artifactId>spring-core</artifactId>
24 <groupId>org.springframework</groupId>
25 </exclusion>
26 </exclusions>
27 </dependency>
28 <dependency>
29 <groupId>commons-logging</groupId>
30 <artifactId>commons-logging</artifactId>
31 <version>1.2</version>
32 </dependency>
33 <dependency>
34 <groupId>com.alibaba</groupId>
35 <artifactId>fastjson</artifactId>
36 <version>1.2.51</version>
37 </dependency>
38
39 <dependency>
40 <groupId>cglib</groupId>
41 <artifactId>cglib</artifactId>
42 <version>3.1</version>
43 </dependency>
44 <dependency>
45 <groupId>org.projectlombok</groupId>
46 <artifactId>lombok</artifactId>
47 <version>1.18.6</version>
48 </dependency>
49 </dependencies>
项⽬依赖
⼆. 准备测试类及数据
@Data
public static class CosmosY {
private String filed5;
private String filed6;
private String filed7;
private String filed8;
private String filed9;
private String filed10;
private String filed11;
private String filed12;
private String filed13;
private String filed14;
private String filed15;
private String filed16;
private String filed17;
private String filed18;
private String filed19;
private String filed20;
private String filed21;
private String filed22;
private String filed23;
private String filed24;
private String filed25;
private String filed26;
private String filed27;
private String filed28;
private String filed29;
private String filed30;
private String filed31;
private String filed32;
private String filed33;
private String filed34;
private String filed35;
private String filed36;
private String filed37;
private String filed38;
private String filed39;
private String filed40;
private String filed41;
private String filed42;
private String filed43;
private String filed44;
private String filed45;
private String filed46;
private String filed47;
private String filed48;
private String filed49;
private String filed50;
}
测试类:SourceData
@Data
public static class CosmosN {
private String filed1;
private String filed2;
private String filed3;
private String filed4;
private String filed5;
private String filed6;
private String filed7;
private String filed8;
private String filed9;
private String filed10;
private String filed11;
private String filed12;
private String filed13;
private String filed14;
private String filed15;
private String filed16;
private String filed17;
private String filed18;
private String filed19;
private String filed20;
private String filed21;
private String filed22;
private String filed23;
private String filed24;
private String filed25;
private String filed26;
private String filed31;
private String filed32;
private String filed33;
private String filed34;
private String filed35;
private String filed36;
private String filed37;
private String filed38;
private String filed39;
private String filed40;
private String filed41;
private String filed42;
private String filed43;
private String filed44;
private String filed45;
private String filed46;
private String filed47;
private String filed48;
private String filed49;
private String filed50;
}
测试类:⽬标类
使⽤随机数据,初始化源数据对象
1private static CosmosY getCosmosY() {
2 CosmosY cosmosY = new CosmosY();
3 Field[] fields = Class().getDeclaredFields();
4for (Field field : fields) {
5try {
6 field.setAccessible(true);
7 field.set(cosmosY, getRandomString());
8 } catch (IllegalAccessException e) {
9 e.printStackTrace();
10 }
11 }
12return cosmosY;
13 }
14
15
16/**
17 * 获取随机词
18 *
19 * @return
20*/
21private static String getRandomString() {
22
23 Random random = new Random();
24 List<String> stringList = new ArrayList<String>();
25 stringList.add("application 应⽤程式应⽤、应⽤程序");
26 stringList.add("application framework 应⽤程式框架、应⽤框架应⽤程序框架");
27 stringList.add("architecture 架构、系统架构体系结构");
28 stringList.add("argument 引数(传给函式的值)。叁见 parameter 叁数、实质叁数、实叁、⾃变量");
29 stringList.add("array 阵列数组");
30 stringList.add("arrow operator arrow(箭头)运算⼦箭头操作符");
31 stringList.add("assembly 装配件");
32 stringList.add("assembly language 组合语⾔汇编语⾔");
33 stringList.add("assert(ion) 断⾔");
34 stringList.add("assign 指派、指定、设值、赋值赋值");
35 stringList.add("assignment 指派、指定赋值、分配");
36 stringList.add("assignment operator 指派(赋值)运算⼦ = 赋值操作符");
37 stringList.add("associated 相应的、相关的相关的、关联、相应的");
38 stringList.add("associative container 关联式容器(对应 sequential container)关联式容器");
39 stringList.add("atomic 不可分割的原⼦的");
40 stringList.add("attribute 属性属性、特性");
41 stringList.add("audio ⾳讯⾳频");
42 stringList.add("A.I. ⼈⼯智慧⼈⼯智能");
43 stringList.add("background 背景背景(⽤於图形着⾊)后台(⽤於⾏程)");
44 stringList.add("backward compatible 回溯相容向下兼容");
45 stringList.add("bandwidth 频宽带宽");
46 stringList.add("base class 基础类别基类");
47 stringList.add("base type 基础型别 (等同於 base class)");
48 stringList.add("batch 批次(意思是整批作业)批处理");
49 stringList.add("benefit 利益收益");
50 stringList.add("best viable function 最佳可⾏函式最佳可⾏函式(从 viable functions 中挑出的最佳吻合者)");
51 stringList.add("binary search ⼆分搜寻法⼆分查");
52 stringList.add("binary tree ⼆元树⼆叉树");
53 stringList.add("binary function ⼆元函式双叁函数");
54 stringList.add("binary operator ⼆元运算⼦⼆元操作符");
55 stringList.add("binding 系结绑定");
56 stringList.add("bit 位元位");
57 stringList.add("bit field 位元栏位域");
58 stringList.add("bitmap 位元图位图");
59 stringList.add("bitwise 以 bit 为单元逐⼀┅");
60 stringList.add("bitwise copy 以 bit 为单元进⾏复制;位元逐⼀复制位拷贝");
61 stringList.add("block 区块,区段块、区块、语句块");
62 stringList.add("boolean 布林值(真假值,true 或 false)布尔值");
63 stringList.add("border 边框、框线边框");
64 stringList.add("brace(curly brace) ⼤括弧、⼤括号花括弧、花括号");
65 stringList.add("bracket(square brakcet) 中括弧、中括号⽅括弧、⽅括号");
66 stringList.add("breakpoint 中断点断点");
67 stringList.add("build 建造、构筑、建置(MS ⽤语)");
68 stringList.add("build-in 内建内置");
69 stringList.add("bus 汇流排总线");
70 stringList.add("business 商务,业务业务");
71 stringList.add("buttons 按钮按钮");
72 stringList.add("byte 位元组(由 8 bits 组成)字节");
73 stringList.add("cache 快取⾼速缓存");
74 stringList.add("call 呼叫、叫⽤调⽤");
75 stringList.add("callback 回呼回调");
76 stringList.add("call operator call(函式呼叫)运算⼦调⽤操作符 ># (同 function call operator)");
77 stringList.add("candidate function 候选函式候选函数 ># (在函式多载决议程序中出现的候选函式)");
78 stringList.add("chain 串链(例 chain of function calls)链");
79 stringList.add("character 字元字符");
80 stringList.add("check box 核取⽅块 (i.e. check button) 复选框");
81 stringList.add("checked exception 可控式异常(Java)");
82 stringList.add("check button ⽅钮 (i.e. check box) 复选按钮");
83 stringList.add("child class ⼦类别(或称为derived class, subtype)⼦类");
84 stringList.add("class 类别类");
85 stringList.add("class body 类别本体类体");
86 stringList.add("class declaration 类别宣告、类别宣告式类声明");
87 stringList.add("class definition 类别定义、类别定义式类定义");
88 stringList.add("class derivation list 类别衍化列类继承列表");
89 stringList.add("class head 类别表头类头");
90 stringList.add("class hierarchy 类别继承体系, 类别阶层类层次体系");
91 stringList.add("class library 类别程式库、类别库类库");
92 stringList.add("class template 类别模板、类别范本类模板");
93 stringList.add("class template partial specializations ># 类别模板偏特化类模板部分特化");
94 stringList.add("class template specializations ># 类别模板特化类模板特化");
95 stringList.add("cleanup 清理、善后清理、清除");
96 stringList.add("client 客端、客户端、客户客户");
97 stringList.add("client-server 主从架构客户/服务器");
98 stringList.add("clipboard 剪贴簿剪贴板");
99 stringList.add("clone 复制克隆");
100 stringList.add("collection 集集合");
101 stringList.add("combo box 复合⽅块、复合框组合框");
102 stringList.add("command line 命令列命令⾏ (系统⽂字模式下的整⾏执⾏命令)");
103 stringList.add("communication 通讯通讯");
104 stringList.add("compatible 相容兼容");
105 stringList.add("compile time 编译期编译期、编译时");
106 stringList.add("compiler 编译器编译器");
107 stringList.add("component 组件组件");
108 stringList.add("composition 复合、合成、组合组合");
109 stringList.add("computer 电脑、计算机计算机、电脑");
110 stringList.add("concept 概念概念");
111 stringList.add("concrete 具象的实在的");
112 stringList.add("concurrent 并⾏并发");
113 stringList.add("configuration 组态配置");
114 stringList.add("connection 连接,连线(⽹络,资料库)连接");
115 stringList.add("constraint 约束(条件)");
116 stringList.add("construct 构件构件");
117 stringList.add("container 容器容器 ># (存放资料的某种结构如 list, vector…)");
118 stringList.add("containment 内含包容");
119 stringList.add("context 背景关系、周遭环境、上下脉络环境、上下⽂");
120 stringList.add("control 控制元件、控件控件");
121 stringList.add("console 主控台控制台");
122 stringList.add("const 常数(constant 的缩写,C++ 关键字)");
123 stringList.add("constant 常数(相对於 variable)常量");
124 stringList.add("constructor(ctor)建构式构造函数 ># (与class 同名的⼀种 member functions)"); 125 stringList.add("copy (v) 复制、拷贝拷贝");
126 stringList.add("copy (n) 复件, 副本");
127 stringList.add("cover 涵盖覆盖");
128 stringList.add("create 创建、建⽴、产⽣、⽣成创建");
129 stringList.add("creation 产⽣、⽣成创建");
130 stringList.add("cursor 游标光标");
131 stringList.add("custom 订制、⾃定定制");
132 stringList.add("data 资料数据");
133 stringList.add("database 资料库数据库");
134 stringList.add("database schema 数据库结构纲⽬");
135 stringList.add("data member 资料成员、成员变数数据成员、成员变量");
136 stringList.add("data structure 资料结构数据结构");
137 stringList.add("datagram 资料元数据报⽂");
138 stringList.add("dead lock 死结死锁");
139 stringList.add("debug 除错调试");
140 stringList.add("debugger 除错器调试器");
141 stringList.add("declaration 宣告、宣告式声明");
142 stringList.add("deduction 推导(例:template argument deduction)推导、推断");
143 stringList.add("default 预设缺省、默认");
144 stringList.add("defer 延缓推迟");
145 stringList.add("define 定义预定义");
146 stringList.add("definition 定义、定义区、定义式定义");
147 stringList.add("delegate 委派、委托、委任委托");
148 stringList.add("delegation (同上)");
149 stringList.add("demarshal 反编列散集");
150 stringList.add("dereference 提领(取出指标所指物体的内容)解叁考");
151 stringList.add("dereference operator dereference(提领)运算⼦ * 解叁考操作符");
152 stringList.add("derived class 衍⽣类别派⽣类");
153 stringList.add("design by contract 契约式设计");
154 stringList.add("design pattern 设计范式、设计样式设计模式※最近我⽐较喜欢「设计范式」⼀词"); 155 stringList.add("destroy 摧毁、销毁");
156 stringList.add("destructor 解构式析构函数");
157 stringList.add("device 装置、设备设备");
158 stringList.add("dialog 对话窗、对话盒对话框");
159 stringList.add("directive 指令(例:using directive) (编译)指⽰符");
160 stringList.add("directory ⽬录⽬录");
161 stringList.add("disk 碟盘");
162 stringList.add("dispatch 分派分派");
163 stringList.add("distributed computing 分布式计算 (分布式电算) 分布式计算分散式计算 (分散式电算)"); 164 stringList.add("document ⽂件⽂档");
165 stringList.add("dot operator dot(句点)运算⼦ . (圆)点操作符");
166 stringList.add("driver 驱动程式驱动(程序)");
167 stringList.add("dynamic binding 动态系结动态绑定");
168 stringList.add("efficiency 效率效率");
169 stringList.add("efficient ⾼效⾼效");
170 stringList.add("end user 终端⽤户");
171 stringList.add("entity 物体实体、物体");
172 stringList.add("encapsulation 封装封装");
173 stringList.add("enclosing class 外围类别(与巢状类别 nested class 有关)外围类");
174 stringList.add("enum (enumeration) 列举(⼀种 C++ 资料型别)枚举");
175 stringList.add("enumerators 列举元(enum 型别中的成员)枚举成员、枚举器");
176 stringList.add("equal 相等相等");
177 stringList.add("equality 相等性相等性");
178 stringList.add("equality operator equality(等号)运算⼦ == 等号操作符");
179 stringList.add("equivalence 等价性、等同性、对等性等价性");
180 stringList.add("equivalent 等价、等同、对等等价");
181 stringList.add("escape code 转义码转义码");
spring framework表达式assign182 stringList.add("evaluate 评估、求值、核定评估");
183 stringList.add("event 事件事件");
184 stringList.add("event driven 事件驱动的事件驱动的");
185 stringList.add("exception 异常情况异常");
186 stringList.add("exception declaration 异常宣告(ref. C++ Primer 3/e, 11.3)异常声明");
187 stringList.add("exception handling 异常处理、异常处理机制异常处理、异常处理机制");
188 stringList.add("exception specification 异常规格(ref. C++ Primer 3/e, 11.4)异常规范");
189 stringList.add("exit 退离(指离开函式时的那⼀个执⾏点)退出");
190 stringList.add("explicit 明⽩的、明显的、显式显式");
191 stringList.add("export 汇出引出、导出");
192 stringList.add("expression 运算式、算式表达式");
193 stringList.add("facility 设施、设备设施、设备");
194 stringList.add("feature 特性");
195 stringList.add("field 栏位,资料栏(Java)字段, 值域(Java)");
196 stringList.add("file 档案⽂件");
197 stringList.add("firmware 韧体固件");
198 stringList.add("flag 旗标标记");
199 stringList.add("flash memory 快闪记忆体闪存");
200 stringList.add("flexibility 弹性灵活性");
201 stringList.add("flush 清理、扫清刷新");
202 stringList.add("font 字型字体");
203 stringList.add("form 表单(programming ⽤语)窗体");
204 stringList.add("formal parameter 形式叁数形式叁数");
205 stringList.add("forward declaration 前置宣告前置声明");
206 stringList.add("forwarding 转呼叫,转发转发");
207 stringList.add("forwarding function 转呼叫函式,转发函式转发函数");
208 stringList.add("fractal 碎形分形");
209 stringList.add("framework 框架框架");
210 stringList.add("full specialization 全特化(ref. partial specialization)");
211 stringList.add("function 函式、函数函数");
212 stringList.add("function call operator 同 call operator");
213 stringList.add("function object 函式物件(ref. C++ Primer 3/e, 12.3)函数对象");
214 stringList.add("function overloaded resolution 函式多载决议程序函数重载解决(⽅案)");
215 stringList.add("functionality 功能、机能功能");
216 stringList.add("function template 函式模板、函式范本函数模板");
217 stringList.add("functor 仿函式仿函式、函⼦");
218 stringList.add("game 游戏游戏");
219 stringList.add("generate ⽣成");
220 stringList.add("generic 泛型、⼀般化的⼀般化的、通⽤的、泛化");
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
flowable 委托表达式
« 上一篇
Spring@Aspect切面参数传递
下一篇 »
推荐文章
热门文章
-
一种任意人头与任意人体的3D结合方法
2025-01-07 -
正则匹配c语言中8进制
2025-01-07 -
fortran数据格式
2025-01-07 -
python中文本转数字用的公式
2025-01-07 -
gh 文本变数值
2025-01-07 -
js判断输入是否为正整数、浮点数等数字的函数代码
2025-01-07 -
qt浮点数正则表达式
2025-01-07 -
QT正则表达式限制输入值
2025-01-07 -
手机号码和电话号码的正则表达式
2025-01-07 -
str转浮点-概述说明以及解释
2025-01-07 -
英豪结尾的诗句
2025-01-07 -
Java正则表达式:符合以特定字符串开头,以特定字符串结尾的所有结果
2025-01-07 -
machinebuilder使用手册
2025-01-07 -
ASP.NET网站建设基本常用代码
2025-01-07 -
LCD显示实时时钟
2025-01-07 -
经纬度正则表达式解析
2025-01-07 -
前端科学计数法转数字
2025-01-07 -
python正则表达式re之compile函数解析
2025-01-07 -
pythonunittest之断言及示例
2025-01-07 -
[lua]lua中匹配字符串小数
2025-01-07
最新文章
-
nginx map用法 正则
2025-01-07 -
Prometheus监控学习笔记之初识PromQL
2025-01-07 -
关于PHP中的webshell
2025-01-07 -
python中re.findall函数实例用法
2025-01-07 -
nginx url表达式
2025-01-07 -
nginx 正则匹配参数
2025-01-07
发表评论