「Java」BeanUtilsクラスのcopyPropertiesメソッドでクラスBeanのフィールドをコピーする
書式
copyProperties(Object dest, Object orig)
戻り値:void
コピー元の各値をコピー先へ設定します。
同じ名前のフィールドの中身をコピーします。
1.コピー元クラス(UserIntro.java)の定義
package com.arkgame.study;
public class UserIntro {
private Integer empId = null;
private String userName = null;
private String addr;
public UserIntro(Integer empId, String userName, String empAddr) {
super();
this.empId = empId;
this.userName = userName;
this.addr = empAddr;
}
public Integer getEmpId() {
return empId;
}
public void setEmpId(Integer empId) {
this.empId = empId;
}
public String getuserName() {
return userName;
}
public void setuserName(String userName) {
this.userName = userName;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
}
2.コピー先クラス(UserCopyProp.java)の定義
package com.arkgame.study;
public class UserCopyProp {
private Integer age = null;
private String userName = null;
private String addr = null;
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getuserName() {
return userName;
}
public void setuserName(String userName) {
this.userName = userName;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
}
3.copyProperties(Object dest, Object orig)
コピー元の属性値をコピー先へセットします。
使用例
package com.arkgame.study;
import java.lang.reflect.InvocationTargetException;
import org.apache.commons.beanutils.BeanUtils;
public class CopyPropertiesDemo {
public static void main(String[] args) {
// UserIntroオブジェクト生成 コンストラクターあり (source側)
UserIntro userIntro = new UserIntro(1001, "User008", "Real Address 007");
// Userオブジェクト生成 コンストラクターなし (dest側)
UserCopyProp userCopyProp = new UserCopyProp();
try {
// コピー元(userIntro) コピー先(user)
BeanUtils.copyProperties(userCopyProp, userIntro);
System.out.println("age属性をコピーしない結果: " + userCopyProp.getAge());
System.out.println("username属性をコピーする結果: " + userCopyProp.getuserName());
System.out.println("addr属性をコピーする結果: " + userCopyProp.getAddr());
} catch (IllegalAccessException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
}
実行結果
age属性をコピーしない結果: null username属性をコピーする結果: User008 addr属性をコピーする結果: Real Address 007