`
Eric_liu
  • 浏览: 90925 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • JAVA
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的属性值发生了变化, 具体原因还没有找到...

 

 

 

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

分享到:
评论
7 楼 realdah 2007-08-13  
是否所有属性都是serializable?
6 楼 birdjavaeye 2007-08-11  
主要是transient的不拷贝了,自己做clone就可以拷贝transient东西
5 楼 不吃鱼的猫 2007-08-10  
问题没有,效率会慢一些
4 楼 litchi 2007-08-10  
这么做,和自己实现clone方法,得到的对象有什么区别吗
3 楼 Eric_liu 2007-08-10  
是我的问题,程序中对象的引用出现的问题.
2 楼 抛出异常的爱 2007-05-08  
有无static的东西在类中?
有无fainl的东西在类中?
有无侦听在实例中?
有无单例在实例中?
1 楼 dovecat 2007-05-08  
你把你的对象弄上来看看.
BTW:这样的深copy没问题.

相关推荐

    深拷贝.js(考虑最全的深拷贝函数)

    js考虑最完善的深拷贝函数,可以深拷贝引用对象和基本对象

    C#基于表达式(Expression)实现对象深拷贝

    1. **创建深拷贝辅助类**:定义一个静态类,如`DeepCopyHelper`,这个类将包含用于创建深拷贝的静态方法。 2. **获取属性信息**:使用`Type`和`PropertyInfo`类来获取对象的类型信息和所有公开的可读写属性。 3. **...

    copy的使用(深拷贝、浅拷贝)

    在Python编程语言中,"copy"模块提供了对对象复制的...了解深拷贝和浅拷贝的概念后,开发者可以根据具体需求选择合适的方法。在实际编程中,结合使用`copy`模块和`deepcopy`函数,可以更有效地管理内存和数据的独立性。

    js数组的深拷贝

    深拷贝的方法有很多种,这里我们将探讨几种常见的实现方式。 ### 1. JSON.parse 和 JSON.stringify 这是一种简单但有限的深拷贝方法,只适用于没有循环引用和函数的纯JSON对象的数组。示例代码如下: ```...

    深拷贝例.cpp

    深拷贝例.cpp 东南大学信息科学与工程学院大一C++课程相关资料

    深拷贝与浅拷贝;copy与mutableCopy;容器类型的深拷贝;copy和strong;

    1、只有NS类型调用copy方法才是浅拷贝,其他的情况全是深拷贝 2、容器类调用copy或mutableCopy能出现的深拷贝的情况下,只是容器的深拷贝,而非容器内元素的深拷贝 3、无论是声明NSString还是NSMutableString类型的...

    深拷贝拷贝的是内容,浅拷贝拷贝的是指针

    在计算机编程领域中,深拷贝(Deep Copy)与浅拷贝(Shallow Copy)是两种常见的对象复制方法。这两种方法在处理复杂数据结构(如数组、列表等)时有着本质的不同。 **深拷贝**: - **定义**:深拷贝是指在进行对象...

    C++之深拷贝和浅拷贝

    解决浅拷贝问题的方法是实现一个深拷贝的拷贝构造函数。深拷贝不仅复制指针本身,还会复制指针指向的数据,为每个对象分配独立的内存空间。这样,在析构函数中释放内存时,每个对象释放的是其独立分配的内存,从而...

    最专业的深拷贝JS库

    在JavaScript编程中,深拷贝和浅拷贝是两种常见的数据复制方法。深拷贝创建了一个新对象,这个新对象复制了原始对象的所有属性,并且这些属性的值都是原始对象属性值的副本,包括嵌套的对象和数组。这意味着对深拷贝...

    Java中的深拷贝(深复制)和浅拷贝(浅复制) 示例代码

    当我们复制一个对象时,有两种主要的方法:浅拷贝和深拷贝。 2. **浅拷贝(浅复制)** 浅拷贝是指创建一个新对象,然后将原对象的引用字段的值复制到新对象中。这意味着新旧两个对象指向相同的内存区域。如果原...

    winform 深拷贝的实现源码

    实现深拷贝通常需要自定义代码或者使用序列化和反序列化的方法。 在WinForm应用中,可能遇到需要深拷贝控件、数据绑定对象或者其他复杂对象的情况。例如,如果你有一个自定义控件,其中包含了其他控件或复杂的业务...

    ios-深拷贝对象.zip

    在iOS中,深拷贝的实现方法有很多种,比如使用NSCopying协议、NSKeyedArchiver/NSKeyedUnarchiver,或者自定义拷贝逻辑。对于包含复杂对象(如数组、字典等)的情况,深拷贝尤为重要,因为这些容器类的默认拷贝行为...

    深拷贝和浅拷贝一些例子

    深拷贝和浅拷贝一些例子

    C#浅拷贝(MemberwiseClone等多种方法)与深拷贝(反射、多种反序列化)实例

    接下来,我们讨论深拷贝。深拷贝需要创建一个新的对象,并递归地复制所有引用的对象。在C#中,可以使用几种不同的方法来实现深拷贝,如手动实现、序列化/反序列化、反射等。 1. 手动实现:针对每个类,编写复制所有...

    C++ 类的深拷贝

    ### C++ 类的深拷贝知识点详解 #### 一、动态整型数组类 Vect 的设计与实现 在 C++ 中,动态整型数组类 `Vect` 的设计涉及到多个面向对象编程概念的应用,如构造函数重载、深拷贝、析构函数等。下面将详细介绍这些...

    C++深拷贝浅拷贝

    根据提供的标题、描述和部分无法识别的内容,我们将围绕“C++深拷贝与浅拷贝”的主题进行深入探讨。在C++编程语言中,深拷贝(Deep Copy)与浅拷贝(Shallow Copy)是对象复制时经常遇到的概念。它们在内存管理和...

    C#浅拷贝深拷贝

    在这个例子中,`Clone()`方法创建了一个新的`MyClass`实例,并且通过创建新的字符串对象实现了深拷贝。 `CloneDemo`可能是一个示例项目,它包含了关于如何在C#中实现浅拷贝和深拷贝的代码。通过分析和运行这个项目...

    C#深拷贝 C#深拷贝

    C#深拷贝;C#深拷贝;C#深拷贝;C#深拷贝;C#深拷贝;C#深拷贝;

    使用java反射机制实现java的深拷贝

    如果字段是引用类型,则需要递归调用深拷贝方法。反射在这里的作用就是动态获取类的结构信息并进行操作。 以下是一个简单的深拷贝实现步骤: 1. 获取源对象的`Class`对象,可以通过`getClass()`或`Class.forName()...

    浅拷贝深拷贝之jQuery中的$.extend分析

    这篇博客“浅拷贝深拷贝之jQuery中的$.extend分析”深入探讨了`$.extend`在浅拷贝和深拷贝场景下的工作原理,这对于理解JavaScript对象的复制机制至关重要。 浅拷贝是指创建一个新对象,然后将源对象的引用属性复制...

Global site tag (gtag.js) - Google Analytics