社区
Java EE
帖子详情
java属性copy BeanUtils.copyProperties(to, from)问题
java_freshman01
2012-01-13 10:27:06
BeanUtils.copyProperties(to, from);只能全部属性进行copy,有没有一个工具类可以将 from类中的不为NULL的属性copy到to类中相应的属性。from类中为null的属性,to类中保持不变。
...全文
918
6
打赏
收藏
java属性copy BeanUtils.copyProperties(to, from)问题
BeanUtils.copyProperties(to, from);只能全部属性进行copy,有没有一个工具类可以将 from类中的不为NULL的属性copy到to类中相应的属性。from类中为null的属性,to类中保持不变。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
MGL锅仔
2013-12-31
打赏
举报
回复
Apache这个又这个缺陷,也不算是缺陷吧,只是满足不了一些情况而已,我也需要只复制不为空的字段,也找一下资料想想改源代码,可水平不高实在不想硬着头皮看那源代码,所以自己写了一个工具类,实现这样的功能
java_freshman01
2012-08-07
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
不错呀!
[/Quote]
要是没人回复,我一辈子也结不了贴
ichenfang163
2012-08-07
打赏
举报
回复
不错呀!
java_freshman01
2012-01-13
打赏
举报
回复
就是部分copy的意思
java_freshman01
2012-01-13
打赏
举报
回复
没人回答...哎,无奈啊,还是自己结贴吧。
private static void copyPriperties(Object o1, Object o2) {
String fileName,str,getName,setName;
List fields = new ArrayList();
Method getMethod = null;
Method setMethod = null;
try {
Class c1 = o1.getClass();
Class c2 = o2.getClass();
Field[] fs1 = c1.getDeclaredFields();
Field[] fs2 = c2.getDeclaredFields();
//两个类属性比较剔除不相同的属性,只留下相同的属性
for(int i = 0;i < fs2.length;i++) {
for(int j = 0;j < fs1.length;j++) {
if(fs1[j].getName().equals(fs2[i].getName())) {
fields.add(fs1[j]);
break;
}
}
}
if(null != fields && fields.size() > 0){
for (int i = 0;i < fields.size();i++) {
//获取属性名称
Field f = (Field) fields.get(i);
fileName = f.getName();
//属性名第一个字母大写
str = fileName.substring(0, 1).toUpperCase();
//拼凑getXXX和setXXX方法名
getName = "get" + str + fileName.substring(1);
setName = "set" + str + fileName.substring(1);
//获取get、set方法
getMethod = c1.getMethod(getName, new Class[]{});
setMethod = c2.getMethod(setName, new Class[]{f.getType()});
//获取属性值
Object o = getMethod.invoke(o1, new Object[]{});
System.out.println(fileName + " : " + o);
//将属性值放入另一个对象中对应的属性
if(null != o) {
System.out.println("o2.setMethod = " + setMethod);
setMethod.invoke(o2, new Object[] {o});
}
}
}
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
java_freshman01
2012-01-13
打赏
举报
回复
额?来人呀
Bea
nUtils
.
copy
Properties
的用法
文章目录what?why?How?源码 what?
Bea
nUtils
它提供了对
java
反射和自省API的包装。它里面还有很多工具类,这里我们介绍一下
copy
Properties
。 why? 我们如果有两个具有很多相同
属性
的
Java
Bea
n,一个很常见的情况就是Struts里的PO对象(持久对象)和对应的ActionForm,传统的方式对
属性
逐个赋值: casesUserIntegralEn...
JAVA
对象之间
属性
复制
Bea
nUtils
.
copy
Properties
背景 项目中有时遇到对象
属性
之间赋值,但是对象的赋值
属性
比较多的时候,会想到用
Bea
nUtils
.
copy
Properties
进行拷贝。 用法
Bea
nUtils
提供对
Java
反射和自省API的包装。其主要目的是利用反射机制对
Java
Bea
n的
属性
进行处理。 User对象 /** * Created by XDarker * 2019/9/28 22:23 */ publi...
java
Bea
nUtils
.
copy
Properties
Bea
nUtils
.
copy
Properties
最近在使用
Bea
nUtils
.
copy
Properties
类来进行
java
对象类型赋值转化的时候发现有一些网上的博客,有些错误 有些把内容都弄反了 作用 进行对象的转化
Bea
nUtils
.
copy
Properties
(“要转化的对象”," 转化的数据对象") val temp = new com.da...
使用Spring提供的
Bea
nUtils
.
copy
Properties
()方法报错:Could not
copy
property 'xxx' from source to target
使用Spring提供的
Bea
nUtils
.
copy
Properties
()方法报错:Could not
copy
property 'xxx' from source to target; nested exception is
java
.lang.IllegalArgumentException 调用的方法:org.springframework.
bea
ns.
Bea
nUtils
.
copy
Properties
(Object source, Object target) 报错: org.spri
使用esotericsoftware高速缓存(ASM)的
Bea
nUtils
.
copy
Properties
!高性能!
一、事出有因 项目中使用
Bea
nUtils
.
copy
Properties
但是其性能又不是很满意, 而且阿里发布了阿里巴巴代码规约插件指明了在Apache
Bea
nUtils
.
copy
Properties
()方法后面打了个大大的红叉,提示"避免使用Apache的
Bea
nUtils
进行
属性
的
copy
"。心里确实不是滋味,从小老师就教导我们,"凡是Apache写的框架都是好框架",怎么可能会存在"性能
问题
"--还是这种猿们所不能容忍的
问题
。心存着对
Bea
nUtils
的怀疑开始了今天的研究之路。 二、市面上的
Java EE
67,513
社区成员
225,879
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章