我试图克隆一个对象并更改新克隆对象的成员函数。如果是浅表复制,并且根据Wiki页面,则浅表复制和原始对象指向同一对象,则应更改变量值。
CloneExample obj1=new CloneExample();
CloneExample obj2=(CloneExample) obj1.clone();
obj1.a=2;
obj1.c='a';
System.out.println("obj1 real "+obj1.a+" "+obj1.c);
System.out.println("obj2 real "+obj2.a+" "+obj2.c);
obj2.a=99;
obj2.c='z';
System.out.println("obj2 after change "+obj2.a+" "+obj2.c);
System.out.println("obj1 after change "+obj1.a+" "+obj1.c);
System.out.println("obj1="+obj1+" obj2="+obj2);
如果此克隆是浅表副本,则obj2和Obj1指向相同的引用obj,更改obj2应该反映在obj1中。不会的
任何人都可以解释(我知道克隆的目的是为我们提供对象的副本,但是如果它是浅表副本,那么为什么我们需要浅表副本?我们应该始终进行深表副本)。谢谢。
当您调用object.clone()时,将创建新对象。因此,您将获得对该对象的引用。只有原始类型字段的对象正在完美克隆。结果,您获得了一个与obj1副本完全独立的副本。但是,如果您的对象具有带有引用的字段,则需要进行深度克隆。
我已经编写了一个测试应用程序,用于演示使用浅层、深层和复制构造函数的Java克隆。 我实现了浅和深,但与复制构造函数我认为我错过了一些东西。 请查看下面的代码,并让我知道复制构造函数实现的修复方法。 输出(复制构造函数) 15007 Amit Chirimiri Kripalu 15007 Amit Chirimiri ShriKrishn 编辑: 由于学生类包含嵌套类(教师)引用,简单的复制构造
本文向大家介绍C# 中浅克隆与深克隆(浅拷贝与深拷贝)的区别?相关面试题,主要包含被问及C# 中浅克隆与深克隆(浅拷贝与深拷贝)的区别?时的应答技巧和注意事项,需要的朋友参考一下 (1)浅克隆 在浅克隆中,如果原型对象的成员变量是值类型,将复制一份给克隆对象;如果原型对象的成员变量是引用类型,则将引用对象的地址复制一份给克隆对象,也就是说原型对象和克隆对象的成员变量指向相同的内存地址。简单来说,在
创建一个对象的浅拷贝。 使用 Object.assign() 和一个空对象({})来创建原始对象的浅拷贝。 const shallowClone = obj => Object.assign({}, obj); const a = { x: true, y: 1 }; const b = shallowClone(a); // a !== b
本文向大家介绍Java克隆执行深拷贝,包括了Java克隆执行深拷贝的使用技巧和注意事项,需要的朋友参考一下 示例 要复制嵌套对象,必须执行深层复制,如本示例所示。
我不确定以下内容是否会导致深度复制或浅复制? 有没有简单快速的方法可以深度复制字符串数组?
问题内容: 似乎对此产生了很多困惑和不同意见([1]和其他来源),究竟会产生深拷贝还是浅拷贝。 该测试表明该副本很深: 该测试表明该副本较浅: 解决方案是否仅是制作顶层维度的深层副本,而其他维度是浅层副本?真相是什么? 问题答案: 它产生一个浅表副本,即一个包含“旧”引用的 新 数组(指向相同的对象,这些对象没有被复制)。 特别是,如果您有嵌套数组,则不会复制这些数组。您将得到一个新数组,其“顶级