对仅仅封装了基本数据类型的对象进行拷贝,只要实现cloneable接口,覆盖clone方法,用Object的clone方法即可(这个方法是JNI实现,速度远远快过新建对象再赋值)。
但是对于复合对象,进行深度拷贝就需要所有对象都实现cloneable接口,覆盖clone方法,显然非常繁杂。
其实可以利用JAVA的对象序列化进行复制对象,如:
private Object cloneObject(Object obj) throws Exception{
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(byteOut);
out.writeObject(obj);
ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
ObjectInputStream in =new ObjectInputStream(byteIn);
return in.readObject();
}
是不是很诡异,hia hia hia!
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。