在实践中往往需要使用到克隆,您可以使用java本身提供的克隆实现,这里我就不说这种实现了。
给您介绍两种比较常用的方法,第一个是dozer。第二个是apache commons-beanutil,希望对大家有帮助
第一种实现依赖包分别是commons-lang.jar,commons-loggin.jar,commons-collections.jar,commons-beanutils.jar
如:
import net.sf.dozer.util.mapping.DozerBeanMapper;
import net.sf.dozer.util.mapping.MapperIF;
public class XZou {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public XZou(){
}
public XZou(XZou zou){//构造函数中克隆
MapperIF mapper = new DozerBeanMapper();
mapper.map(zou, this);
}
public static void main(String[] args) {
XZou zou1 = new XZou();
zou1.setName("张三");
System.out.println(zou1.getAge());// 0岁
XZou zou2 = new XZou(zou1);//克隆一个对象zou2,他的名称和年龄和zou1是一样的
zou1.setAge(10);//设置zou1的年龄是10岁
System.out.println(zou1.getAge());//10
System.out.println(zou2.getName() + "," + zou2.getAge());//张三,0
}
}
第二种commons-beanutil实现依赖包分别是commons-loggin.jar,commons-collections.jar,commons-beanutils.jar
如:
import java.lang.reflect.InvocationTargetException;
import org.apache.commons.beanutils.BeanUtils;
public class XZou {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public XZou(){
}
public static void main(String[] args) throws IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException {
XZou zou1 = new XZou();
zou1.setName("张三");
System.out.println(zou1.getAge());// 0岁
XZou zou2 = (XZou) BeanUtils.cloneBean(zou1);//克隆一个对象zou2,他的名称和年龄和zou1是一样的
zou1.setAge(10);//设置zou1的年龄是10岁
System.out.println(zou1.getAge());//10
System.out.println(zou2.getName() + "," + zou2.getAge());//张三,0
}
}