使用序列化实现java 对象的深拷贝
2011-04-24 23:09
706 查看
clone是Object类的方法,如果对象中的所有属性都属于数值或者基本类型,这样拷贝没有问题的,但是,如果对象中包含子对象的引用,那么拷贝的结果就是两个对象引用同一个子对象。 但是可以通过序列化的方式来实现对象的深拷贝
public Serializable deepCopy() throws IOException, ClassNotFoundException{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(this);
oos.close();
baos.close();
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
Serializable obj = (Serializable) ois.readObject();
ois.close();
bais.close();
return obj;
}
相关文章推荐
- java提高篇(五)-----使用序列化实现对象的拷贝
- java提高篇(五)-----使用序列化实现对象的拷贝
- Java提高篇(五):使用序列化实现对象的拷贝
- [编写高质量代码:改善java程序的151个建议]建议43 避免对象浅拷贝; 建议44:推荐使用序列化实现对象的深拷贝
- java提高篇(六)-----使用序列化实现对象的拷贝
- java提高篇(六)-----使用序列化实现对象的拷贝
- java提高篇(五)-----使用序列化实现对象的拷贝
- java提高篇(六)-----使用序列化实现对象的拷贝
- [改善Java代码] 推荐使用序列化实现对象的拷贝
- java提高篇(五)-----使用序列化实现对象的拷贝
- java提高篇-----使用序列化实现对象的拷贝 (深拷贝)
- java提高篇(六)_使用序列化实现对象的拷贝 转自 http://cmsblogs.com
- java提高篇(五)-----使用序列化实现对象的拷贝
- java提高篇(五)-----使用序列化实现对象的拷贝
- java提高篇(六)-----使用序列化实现对象的拷贝
- java提高篇-----使用序列化实现对象的拷贝
- [编写高质量代码:改善java程序的151个建议]建议43 避免对象浅拷贝; 建议44:推荐使用序列化实现对象的深拷贝
- java 序列化实现对象的深拷贝
- 使用序列化实现对象的拷贝
- java使用serializable进行序列化与反序列化实现对象clone(克隆)