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

Java中任意复杂度的深度Clone

    博客分类:
  • java
阅读更多
在Java中,假定由一个类A,要实现深Clone,只需简单地同时做到下面两点即可:
1. A类要实现Serializable接口。例如:
 
 class A implements Serializable
   {
      ...
   }


2. 在A类中加入下面的方法:
  
public A Clone()    // Deep clone for object of any complexity
   {
       try
       {
           ByteArrayOutputStream baos = new ByteArrayOutputStream();
           ObjectOutputStream oos = new ObjectOutputStream(baos);
           oos.writeObject(this);
           oos.close();
           ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
           ObjectInputStream ois = new ObjectInputStream(bais);
           Object ob = ois.readObject();
           ois.close();
           return (A)ob;
       }
       catch (Exception e)
       {
           e.printStackTrace();
       }      
       return null;
   }


使用的时候用类似下面这样代码:
A a = new A();
A b = a.Clone();


这就是用序列化的方式来实现deep clone。
分享到:
评论

相关推荐

    Java中的克隆(Clone)机制

    总结来说,Java中的克隆机制提供了一种创建对象副本的方式,分为浅克隆和深克隆两种形式,适用于不同的对象结构需求。正确理解和使用克隆机制,可以帮助开发者更有效地管理和复制复杂的数据结构,避免因共享数据导致...

    java clone

    本文将深入探讨Java中的`clone`方法,包括其工作原理、使用场景、注意事项以及一些个人实践心得。 首先,让我们理解什么是`clone`。在Java中,`clone`方法主要用于创建一个现有对象的副本,这个副本与原始对象具有...

    java_clone用法

    ### Java中的`clone`方法详解:浅拷贝与深拷贝 #### 一、引言 在Java中,`clone`方法提供了一种快速复制对象的方式。它属于`Object`类的一部分,但需要显式地在子类中声明并实现`Cloneable`接口才能正常使用。本文...

    Java中的clone方法详解_动力节点Java学院

    Java中的clone方法详解_动力节点Java学院,动力节点口口相传的Java黄埔军校

    java clone的小例子

    这个小例子将帮助初学者理解如何在Java中使用`clone()`来创建对象的副本。让我们深入探讨`clone()`方法以及它在实际编程中的应用。 首先,`clone()`方法是Java Object类的一个成员方法,这意味着所有Java类都隐式地...

    java中的指针,引用及对象的clone

    Java中的对象克隆可以通过实现`Cloneable`接口并覆盖`clone()`方法来完成。对象的克隆分为浅拷贝和深拷贝两种形式。 **1. 浅拷贝** 浅拷贝是指创建一个新的对象,然后将原对象的所有非引用类型的成员变量复制到新...

    浅析Java中clone()方法浅克隆与深度克隆

    在Java中,克隆分为两种类型:浅克隆(Shallow Clone)和深度克隆(Deep Clone)。 1. 浅克隆(Shallow Clone) 浅克隆是Java克隆机制的默认行为。当一个对象被克隆时,如果它的成员变量是基本类型(如int、double...

    java 深度拷贝 复制 深度复制.zip

    在Java中,如果一个类没有实现`Cloneable`接口并重写`clone()`方法,那么通常无法直接进行深度拷贝。这时,我们可以利用Java的反射机制来实现。反射是Java提供的一种强大的工具,它允许我们在运行时检查类、接口、...

    java List 深度复制方法

    在Java中,当我们使用`clone()`方法或`System.arraycopy()`进行复制时,通常得到的是浅复制的结果。这意味着原始对象和复制对象中的引用指向内存中的同一块区域。如果List中的元素是基本类型,这种复制方式是没问题...

    java中clone的用法实例

    clone的用法 希望有帮助,仅供参考 通过例子的分析,可以对克隆的方法有所深入了解

    Java clone方法使用

    详细的描述了Java中 clone方法使用

    java Clone

    Java中的`clone`方法是Java语言提供的一种复制对象的方式,它允许创建一个对象的副本,这个副本与原对象具有相同的属性值,但它们是两个独立的对象,修改副本不会影响原对象。`clone`方法存在于Java的`java.lang....

    Java深浅clone

    在本文中,我们将深入探讨Java中的浅克隆(shallow clone)和深克隆(deep clone),并结合测试代码进行分析。 首先,让我们理解`Cloneable`接口。在Java中,如果一个类想要支持`clone()`方法,它必须实现`...

    java深度克隆

    本文将详细介绍Java中的深度克隆技术,包括其实现原理及应用场景。 #### 二、深度克隆的重要性 在实际开发中,深度克隆具有重要意义: 1. **确保数据独立性**:深度克隆可以创建出与原对象完全独立的新对象,即使...

    Java中clone方法共6页.pdf.zip

    本资料"Java中clone方法共6页.pdf.zip"可能包含了关于如何理解和使用`clone()`方法的详细解释,以及它在实际开发中的应用示例。 `clone()`方法的主要用途是创建一个现有对象的副本,这个副本与原始对象具有相同的...

    clone 深度克隆对象

    在Java中,实现深度克隆通常有两种方式:一是通过实现Cloneable接口并重写Object类的clone()方法;二是使用序列化和反序列化技术。前者需要特别注意的是,只有实现了Cloneable接口的类才能调用默认的clone()方法,...

    Java中的clone方法详解_动力节点Java学院整理

    Java中的clone方法详解 在Java语言中,clone方法是一个非常重要的概念,它允许对象被复制,从而创造出一个新的对象。下面我们将详细介绍Java中的clone方法,并讨论它的实现机制和应用场景。 什么是clone方法 ...

Global site tag (gtag.js) - Google Analytics