`
默翁1
  • 浏览: 27123 次
社区版块
存档分类
最新评论

clone深度复制

    博客分类:
  • java
 
阅读更多
package mianshi;

public class Body implements Cloneable{
    public Head head;
    public Body() {}
    public Body(Head head) {this.head = head;}
 
    @Override
    protected Object clone() throws CloneNotSupportedException {
        Body newBody =  (Body) super.clone();
        newBody.head = (Head) head.clone();
        return newBody;
    }
     

 
static class Head implements Cloneable{
    public  Face face;
     
    public Head() {}
    public Head(Face face){this.face = face;}
    @Override
    protected Object clone() throws CloneNotSupportedException {
        //return super.clone();
        Head newHead = (Head) super.clone();
        newHead.face = (Face) this.face.clone();
        return newHead;
    }
}
 
static class Face implements Cloneable{
    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}
 
public static void main(String[] args) throws CloneNotSupportedException {
     
    Body body = new Body(new Head(new Face()));
     
    Body body1 = (Body) body.clone();
     
    System.out.println("body == body1 : " + (body == body1) );
     
    System.out.println("body.head == body1.head : " +  (body.head == body1.head));
     
    System.out.println("body.head.face == body1.head.face : " +  (body.head.face == body1.head.face));
     
     
}
}
 

 

body == body1 : false
body.head == body1.head : false
body.head.face == body1.head.face : false

 

分享到:
评论

相关推荐

    clone 深度克隆对象

    "clone"方法就是用于复制对象的一种方式,尤其在Java等支持此功能的语言中。本文将深入探讨"深度克隆"这一概念,以及它与普通克隆的区别,并讨论其在实际应用中的优缺点。 深度克隆,也称为完全克隆,是一种创建新...

    List Clone.zip_c list深度复制_list clone_list的深度复制 C#

    List的深度复制 浅谈C#中List<T>对象的深度拷贝问题

    java List 深度复制方法

    这篇博客将探讨如何在Java中对List进行深度复制。 首先,我们来理解一下什么是浅复制和深复制。在Java中,当我们使用`clone()`方法或`System.arraycopy()`进行复制时,通常得到的是浅复制的结果。这意味着原始对象...

    如何由浅复制到深度复制

    我想实现了深度复制呢,也就是我新复制出来的对象不是仅仅复制引用, 而是复制对象!比如说,你需要在一个模板的基础上修改出5个版本的建立,每个版本投递到不同的企业上,版本1投给公司A,版本2投给公司B,。。。...

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

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

    Java深复制与浅复制&Clone

    - 在实际应用中,考虑使用第三方库,如Apache Commons Lang的`DeepCloneable`接口,或者Google的`Gson`库,它们提供了更方便的深度复制功能。 理解并正确使用浅复制和深复制对于开发高效、健壮的Java应用程序至关...

    C#中深度复制和浅度复制详解

    而如果我们使用`clone()`方法进行深度复制,修改`mySource`的`MyContent.val`后,`myTarget`的值就不会受影响。 总结来说,理解C#中的深度复制和浅度复制是优化代码和避免意外副作用的关键。在处理复杂对象时,选择...

    clone()示例源码

    `clone()`的使用通常涉及到深度复制和浅复制的概念,这两者在数据结构和内存管理中扮演着关键角色。 首先,让我们理解`clone()`的基本用法。`clone()`方法创建并返回一个当前对象的副本,新创建的对象与原对象具有...

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

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

    java clone的小例子

    为了得到深拷贝,即完全独立的副本,你需要手动实现深度复制逻辑,例如,遍历引用类型字段并逐个复制每个元素。 总之,`clone()`方法在Java中提供了对对象复制的基本支持,尤其适用于需要创建对象副本的情况。然而...

    clone-json:深度复制json

    $ npm install clone-json --save # Install with yarn $ yarn add clone-json 用法 两个数组相等 let cloneJson = require ( 'clone-json' ) let json = { a : 123 , b : 'str' , c : true , d : [ 1 , '2' , ...

    js-clone:使用深度复制的Javascript对象复制

    js克隆使用深度复制的Javascript对象复制用法var deepClone = require ( './js-clone/index.js' ) ;var object = { name : 'Kator James' , work : { companyName : 'LogicalAddress Ltd' , getCompanyName : ...

    git clone 最新版

    "git clone"是Git中的一个核心命令,用于复制远程仓库到本地。在本文中,我们将深入探讨`git clone`命令以及如何获取其最新版本。 首先,让我们了解`git clone`的基本用法。当你运行`git clone <repository>`时,它...

    C# 使用反射来实现对象的深度复制方法

    if (fieldValue is ICloneable) // 如果字段值实现了ICloneable接口,使用Clone()方法进行深度复制 { field.SetValue(targetDeepCopyObj, (fieldValue as ICloneable).Clone()); } else { field.SetValue...

    clone

    - **深度克隆**:不仅复制对象本身,还递归地复制它引用的对象,确保新创建的对象和原始对象及其所引用的对象都完全独立。 3. **版本控制系统中的克隆** 在版本控制软件(如Git)中,克隆指的是获取远程仓库的...

    mongoose-schema-clone:深度克隆并返回模式的副本,向此模式添加关键路径模式类型对,还可以添加另一个模式并在所有路径,虚拟,getter,setter,索引,方法和静态变量上进行复制

    深度克隆并返回模式的副本,向该模式添加关键路径/模式类型对,您还可以添加另一个模式并复制所有路径、虚拟、getter、setter、索引、方法和静态。 特征: 深度克隆模式 复制路径、虚拟、getter、setter、索引、...

    C#复制和深度复制的实现方法

    在C#编程中,复制对象是一项常见的操作,通常分为浅表复制和深度复制两种方式。浅表复制仅复制对象的引用,而深度复制则会创建一个全新的对象,包括所有嵌套的对象。下面我们将详细探讨这两种复制方法以及如何在C#中...

Global site tag (gtag.js) - Google Analytics