相关疑难解决方法(0)

在Java中,什么是浅拷贝?

java.util.Calendar.clone()返回"...具有相同属性的新日历"并返回"此日历的浅表副本".

为回答这并不似乎是一个浅拷贝这里的SO.这个问题被标记为与语言无关, Java似乎不遵循语言无关的定义.当我单步执行代码时,我注意到结构和元素被复制到这个新对象,而不仅仅是语言无关的结构.

在Java中,什么是浅拷贝?

它与Java深层副本(如果存在)有何不同?

java clone shallow-copy

51
推荐指数
3
解决办法
8万
查看次数

Java 中的克隆

class Person implements Cloneable {

    String firstName;

    public String getFirstName() {
        return firstName;
     }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public Person clone() throws CloneNotSupportedException {
            return (Person) super.clone();
        }
   }

    Person p1 = new Person();
    p1.setFirstName("P1 Sara");

    Person p3 = new Person();
    try {
        p3 = (Person) p1.clone();
    } catch (CloneNotSupportedException e) {
    }

    p3.setFirstName("cloned Sara");
    System.out.println("P3 : " + p3.getFirstName());
    System.out.println("P1: " + p1.getFirstName());
Run Code Online (Sandbox Code Playgroud)

我读过 clone() 方法实际上是一种浅拷贝。因此,我假设当 P3 中某个字段的值发生变化时,P1 中的值也会发生变化。但是,那没有发生。我在这里缺少什么?

java clone cloneable

5
推荐指数
0
解决办法
113
查看次数

标签 统计

clone ×2

java ×2

cloneable ×1

shallow-copy ×1