clone - In Java, what is a shallow copy? -


java.util.Calendar.clone () returns "a new calendar with the same properties" and returns "returns" This shallow copy of this calendar ".

This is not a shallow copy as the answer has been tagged to the question language-agnostic, Java language does not follow the agnostic definition As I stepped through the code, I see that the structure and the elements are copied to this new object, the cave

What is a shallow copy in Java?

Is it different from a Java deep copy (if it exists)?

A shallow copy just copies the values ​​of references given in the class, copies a deep copy values ​​given: < / P>

  class Foo {private bar myBar; ... public foo shallow (copyright) (Foo newFoo = new Foo ()); NewFoo.myBar = myBar; New Return;} Public Foo deepCopy () {Foo newFoo = new Foo (); NewFoo.myBar = myBar.clone (); // or newer bar (mayabara) or merchandise dip copy or ... take new afoo; }} Foo Miefu = New Foo (); Foo SFu = MaiFhu.Salopi (); Foo dfu = myFoo.deepCopy (); MyFoo.myBar == sFoo.myBar = & gt; True myFoo.myBar.equals (sFoo.myBar) = & gt; True myFoo.myBar == dFoo.myBar = & gt; ** False ** myFoo.myBar.equals (dFoo.myBar) = & gt; True is the shallow copy of the same reference ( == ) in this case and deep copy has only one parallel reference ( .equals ()). ) ). 

If any change is done for the value of the shallow copy reference, then copy reflects that change because it shares the same context. If there is a deeper change in the value of the copy reference, then the copy does not reflect that change because it does not share the same context.

C-ism

  Int A = 10; // init int & amp; B = A; // shallow - copies reference c = a; // deep - copies VALUE ++ a;  

Result:

  a is 11 * b 11c 10  

Comments

Popular posts from this blog

c# - ListView onScroll event -

PHP - get image from byte array -

Linux Terminal Problem with Non-Canonical Terminal I/O app -