在開發(fā)中钧敞,經(jīng)常會(huì)出現(xiàn)兩個(gè)VO或DTO這種實(shí)體類之間字段的復(fù)制糊渊,如果兩個(gè)類之間字段大部分都一樣胳蛮,就可以采用BeanUtils進(jìn)行字段的復(fù)制销凑,非常簡(jiǎn)單有效,能節(jié)省時(shí)間仅炊。如果兩個(gè)類都有50個(gè)左右字段斗幼,要一一寫代碼set and get,非得吐血不可抚垄。
這個(gè)類字段復(fù)制的原理非常簡(jiǎn)單蜕窿,就是利用java的反射,先獲取要復(fù)制類的所有屬性呆馁,然后從原類中取該字段的get方法桐经,如果有,則復(fù)制浙滤,如果沒(méi)有則不復(fù)制阴挣。
pom.xml
新增依賴
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>
新建兩個(gè)類,User1和User2
public class User1 {
private String name;//
private int id;//
private String pass;//
}
public class User2 {
private String name;//
private int id;//
}
其余的set和get方法自補(bǔ)
代碼參見:com.critc.BeanUtilsTest
纺腊,復(fù)制方法如下:
public static void main(String[] args) throws Exception {
public static void main(String[] args) throws Exception {
User1 user1 = new User1("test", 1, "123456");//先初始化一個(gè)類
User2 user2 = new User2();
BeanUtils.copyProperties(user2, user1);//代碼復(fù)制
System.out.println(user2.toString());
}