public class SimpleDO implements Cloneable, Serializable {
private int x = 1;
private String s = "simpleDO";
@Override
protected Object clone() throws CloneNotSupportedException {
SimpleDO newClass = (SimpleDO)super.clone();
return newClass;
}
}
public class ComplexDO implements Cloneable, Serializable {
private int x = 1;
private String s = "complex";
private Integer a = 123;
private Integer b = 1234;
private Integer c = 1334455;
private String s2 = "hehehe";
private String s3 = "hahahaha";
private Long id = 1233245L;
private ArrayList<SimpleDO> l = new ArrayList<SimpleDO>();
@Override
public Object clone() throws CloneNotSupportedException {
ComplexDO newClass = (ComplexDO) super.clone();
newClass.l = new ArrayList<SimpleDO>();
for (SimpleDO simple : this.l) {
newClass.l.add((SimpleDO) simple.clone());
}
return newClass;
}
}
public Object seirCopy(Object src) {
try {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(byteOut);
out.writeObject(src);
ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
ObjectInputStream in = new ObjectInputStream(byteIn);
Object dest = in.readObject();
return dest;
} catch (Exception e) {
//do some error handler
return null;
}
}
public void testCloneComplex() throws CloneNotSupportedException {
final int copyCount = 1;
List<ComplexDO> complexDOList = new ArrayList<ComplexDO>(copyCount * 3);
final ComplexDO complex = new ComplexDO();
//调用二方库
long start = System.currentTimeMillis();
for(int i = 0; i < copyCount; ++i) {
final ComplexDO deepClone = cloner.deepClone(complex);
complexDOList.add(deepClone);
}
long end = System.currentTimeMillis();
System.out.println("deepClone cost time=" + (end-start));
//调用Cloneable接口实现的clone函数
start = System.currentTimeMillis();
for(int i = 0; i < copyCount; ++i) {
final ComplexDO interfaceClone = (ComplexDO) complex.clone();
complexDOList.add(interfaceClone);
}
end = System.currentTimeMillis();
System.out.println("interfaceClone cost time=" + (end-start));
//序列化与反序列化生成新对象
start = System.currentTimeMillis();
for(int i = 0; i < copyCount; ++i) {
final ComplexDO seirClone = seirCopy(complex);
complexDOList.add(seirClone);
}
end = System.currentTimeMillis();
System.out.println("seirClone cost time=" + (end-start));
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有