gpt4 book ai didi

java - clone() 方法(浅复制或深复制)

转载 作者:太空宇宙 更新时间:2023-11-04 10:13:54 24 4
gpt4 key购买 nike

在 Java 书籍和在线教程中指出 Object.clone()方法提供浅复制,除非使用 Cloneable 接口(interface),但在我实现的代码中 clone()不使用Cloneable的方法接口(interface),它提供深拷贝而不是浅拷贝。

import java.util.GregorianCalendar;
public class test1 {

public static void main(String[] args) {

// create a gregorian calendar, which is an object
GregorianCalendar cal = new GregorianCalendar();

// clone object cal into object y
GregorianCalendar y = (GregorianCalendar) cal.clone();

// check if reference of y is equal to cal or not
System.out.println(cal==y);//it's output should be true if this is a shallow copy but it is false.
}
}

最佳答案

GregorianCalendar 确实实现了 Cloneable 接口(interface),因此它应该进行深层复制。

编辑:Java 仅处理对象的引用。因此,在本例中,由于 GregorianCalendarclone 方法执行深层复制,复制引用的一种方法是将 cal 分配给 y,即 y = cal

关于java - clone() 方法(浅复制或深复制),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51968574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com