【发布时间】:2020-04-26 04:16:42
【问题描述】:
根据定义:
浅拷贝是一种我们只将字段值从一个对象复制到另一个对象的拷贝。它们是不同的对象,但问题是当我们更改任何原始地址的属性时,这也会影响到 shallowCopy 的地址。
我试图查看对象 1 和对象 2 的值是否相同,所以尝试跟随但无法这样做。
public class TestClone implements Cloneable {
private String a;
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
主程序:
package com.test;
public class MainTestClone {
public static void main(String[] args) throws CloneNotSupportedException {
TestClone clone = new TestClone();
clone.setA("RABA");
TestClone clone2 = (TestClone) clone.clone();
System.out.println(clone.getA());
System.out.println(clone2.getA());
System.out.println("---------------------------");
clone.setA("DABA");
System.out.println(clone.getA());
System.out.println(clone2.getA());
System.out.println("---------------------------");
clone2.setA("Clone2 RABA DABA");
System.out.println(clone.getA());
System.out.println(clone2.getA());
}
}
输出:
RABA
RABA
---------------------------
DABA
RABA <--- It does not change to DABA
---------------------------
DABA <--- No Changes here
Clone2 RABA DABA
【问题讨论】:
标签: java clone shallow-copy