• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

How to do �shallow copy� and �deep copy�?

 
Chetan Parekh
Ranch Hand
Posts: 3640
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
While reading API of Object.clone (), I cam across following paragraph.

�The method clone for class Object performs a specific cloning operation. First, if the class of this object does not implement the interface Cloneable, then a CloneNotSupportedException is thrown. Note that all arrays are considered to implement the interface Cloneable. Otherwise, this method creates a new instance of the class of this object and initializes all its fields with exactly the contents of the corresponding fields of this object, as if by assignment; the contents of the fields are not themselves cloned. Thus, this method performs a "shallow copy" of this object, not a "deep copy" operation.�

I am not clear, How to do �shallow copy� and �deep copy�?
[ May 25, 2006: Message edited by: Chetan Parekh ]
 
Jeff Albertson
Ranch Hand
Posts: 1780
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
 
Manesh Kumar
Ranch Hand
Posts: 94
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
In simplest say, in the shallow copy, objects within the array will not be cloned. Only the array object is cloned.
When an array object is cloned, the duplicate array object will have same references to objects as in original array.

In deep cloning, each object in the array will be cloned including array object. Both array objects (original and cloned) will have different references to the objects. You need to write code for implementing deep copy like what Jeff Albertson has given.

But shallow copy does not hold good for array of primitive types.
 
Nikhil Goel
Ranch Hand
Posts: 32
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Here is avery good artcle for the same
http://java.sun.com/developer/JDCTechTips/2001/tt0410.html#making.

This is inline with all the above posts and mentions the 3 different techniques for copying.
 
Chetan Parekh
Ranch Hand
Posts: 3640
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks you very much all, my doubts has been cleared !!
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic