经常使用的一些克隆实现

在实践中往往需要使用到克隆,您可以使用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
		
		
	}
	
	
}

你可能感兴趣的:(apache,.net)