猿问

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

在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.

   }

}


四季花海
浏览 140回答 1
1回答

HUX布斯

GregorianCalendar确实实现了Cloneable接口,所以它应该做一个深拷贝。编辑:Java 只处理对对象的引用。因此,在这种情况下,由于GregorianCalendar的clone方法执行深度复制,复制引用的一种方法是分配cal给y,即y = cal。
随时随地看视频慕课网APP

相关分类

Java
我要回答