java对象属性复制

May 13, 2014

java对象属性复制的工具类很多,常用的有

1
org.springframework.beans.BeanUtils#copyProperties
,
1
org.apache.commons.beanutils.BeanUtils#copyProperties
,这两个都是通过反射实现的,性能嘛,你关心TA就在那里,你不关心TA还是在那里. 高级点的有
1
net.sf.cglib.beans.BeanCopier
,通过生成源代码实现属性复制,但是他的api很难使用.而且不支持基本类型和包装器类型的转换(java的boxing和unboxing只是语法糖而已).

so,重新造了个轮子,采用javassit来生成源代码,并且提供方便使用的api.

使用就像下面这样:

1
2
TestBean target = new TestBean();
Copier.copy(TestBean1.createTest(), target);

TA生成的源代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class CopierImpl1002
 	 implements Copier.Copy
{
  public void copy(Object paramObject1, Object paramObject2)
  {
    TestBean localTestBean = (TestBean)paramObject1;
	TestBean1 localTestBean1 = (TestBean1)paramObject2;
	if (localTestBean.getA1() != null)
  		localTestBean1.setA1(localTestBean.getA1().longValue());
	localTestBean1.setA10(localTestBean.getA10());
 	   	localTestBean1.setA2(localTestBean.isA2());
 	  	localTestBean1.setA3(Integer.valueOf(localTestBean.getA3()));
   		localTestBean1.setB8(Short.valueOf(localTestBean.getB8()));
  	  	localTestBean1.setList(localTestBean.getList());
 	 }
}

源代码见:https://gist.github.com/bohrqiu/5046a2a7d983996f0e5a

一次技术问答

## 一次技术问答最近一年多都没有写博客了,技术上做了很多有意义的事情,也有一些经验上的积累,逐步沉淀到博客上。今天回答某公司的技术上的一些疑问,把问题和回答贴上来。逐步`养`自己的技术观。### 1. 如何做数据安全防范?还有哪些支付安全需要注意?数据安全防范主要分为两个...… Continue reading

2016年05月Reading Notes

Published on August 10, 2016

2016年05月Reading Notes

Published on June 19, 2016