一次复制对象的过程。。。

项目中碰到的,有个操作需要把对象复制一遍然后分别进行不同的操作,结果发现得到的结果是两次操作都进行了之后的

最初的代码是这么写的一次复制对象的过程。。。

这样做肯定不对啦,打印出两个对象的地址一次复制对象的过程。。。

意料之中,是一样的

然后使用了java.lang.Cloneable接口,并且重写了它的clone()方法,感觉我的重写好像有点问题,不过也就这样啦一次复制对象的过程。。。

又复制了一遍一次复制对象的过程。。。好像有点用,两个对象的地址不一样了但是为什么我最后获取到的内容还是一样啊,发现原来我的这个对象里面有list,也打印出地址看看一次复制对象的过程。。。

原来它的list还是使用的浅复制,最后解决是这样的,类实现序列化接口一次复制对象的过程。。。

使用IO流深度复制

public static SgDictionaryData deepCopy(SgDictionaryData sg) {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
try {
ObjectOutputStream out = new ObjectOutputStream(byteOut);
out.writeObject(sg);
 
ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
ObjectInputStream inStream = new ObjectInputStream(byteIn);
SgDictionaryData dest = (SgDictionaryData) inStream.readObject();
return dest;
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;

}

页面效果和内容就不贴出来啦,地址是这样

一次复制对象的过程。。。