论坛首页 Java企业应用论坛

深拷贝方法的疑惑,欢迎大家讨论~

浏览 5851 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-05-08  
OO
java 代码
  1. /**深拷贝对象  
  2.  * @return  
  3.  * @throws IOException  
  4.  * @throws OptionalDataException  
  5.  * @throws ClassNotFoundException  
  6.  */  
  7. public Object deepClone(Object obj) throws IOException, OptionalDataException,   
  8.         ClassNotFoundException {   
  9.     // write to stream   
  10.     ByteArrayOutputStream bo = new ByteArrayOutputStream();   
  11.     ObjectOutputStream oo = new ObjectOutputStream(bo);   
  12.     oo.writeObject(obj);   
  13.   
  14.     // read from stream   
  15.     ByteArrayInputStream bi = new ByteArrayInputStream(bo.toByteArray());   
  16.     ObjectInputStream oi = new ObjectInputStream(bi);   
  17.   
  18.     return (oi.readObject());   
  19. }  

 

把这个方法作为对象的深拷贝会有问题吗?

今天遇到一个怪问题, 对象2是对象1的深拷贝,然后对对象2做操作, 结果对象1的属性值发生了变化, 具体原因还没有找到...

 

 

 

附注: 这个方法没有问题,可以直接使用!但效率比较低点

   发表时间:2007-05-08  
你把你的对象弄上来看看.
BTW:这样的深copy没问题.
0 请登录后投票
   发表时间:2007-05-08  
有无static的东西在类中?
有无fainl的东西在类中?
有无侦听在实例中?
有无单例在实例中?
0 请登录后投票
   发表时间:2007-08-10  
是我的问题,程序中对象的引用出现的问题.
0 请登录后投票
   发表时间:2007-08-10  
这么做,和自己实现clone方法,得到的对象有什么区别吗
0 请登录后投票
   发表时间:2007-08-10  
问题没有,效率会慢一些
0 请登录后投票
   发表时间:2007-08-11  
主要是transient的不拷贝了,自己做clone就可以拷贝transient东西
0 请登录后投票
   发表时间:2007-08-13  
是否所有属性都是serializable?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics