大部分Java程序員應(yīng)該都用過BeanUtils.copyProperties(),起作用就是把兩個對象中相同字段進(jìn)行賦值。
Person p1 = new Person("zong", 30);
Person p2 = new Person();
BeanUtils.copyProperties(p2, p1);
當(dāng)然p2不一定也是Person對象,其他對象也可以。只要兩個對象中有相同的成員變量就可以賦值。
但是如果賦值對象是List等集合類呢???
答案是否定的,它們之間并不能賦值。
Person p1 = new Person("zong", 30);
Person p2 = new Person("ma", 25);
Person p3 = new Person("liu", 20);
List<Person> sList = new ArrayList<Person>(3);
sList.add(p1);
sList.add(p2);
sList.add(p3);
List<Person> tList = new ArrayList<Person>(3);
BeanUtils.copyProperties(tList, sList);
System.out.println(tList.size());
以上代碼是想把sList的值賦給tList,但是運(yùn)行之后發(fā)現(xiàn)tList.size()的值為0,賦值失敗。
如果要對兩個List對象賦值,可以參考如下代碼:
List<Person> tList = new ArrayList<Person>(3);
for (int i = 0; i < sList.size(); i++) {
Person p = new Person();
BeanUtils.copyProperties(p, sList.get(i));
tList.add(p);
}
http://stackoverflow.com/questions/19312055/beanutils-copyproperties-to-copy-arraylist