在java书籍和在线教程中,Object.clone()除非使用Cloneable接口,否则方法提供浅拷贝,但在我实现的代码中clone()不使用Cloneable接口的方法,它提供深拷贝而不是浅拷贝。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. }}
1 回答
HUX布斯
TA贡献1876条经验 获得超6个赞
GregorianCalendar
确实实现了Cloneable
接口,所以它应该做一个深拷贝。
编辑:Java 只处理对对象的引用。因此,在这种情况下,由于GregorianCalendar
的clone
方法执行深度复制,复制引用的一种方法是分配cal
给y
,即y = cal
。
添加回答
举报
0/150
提交
取消