|
Java™ by example!
|
|
|
Can you give me an example on how and when to use clone()?
Implement the Cloneable interface and call super.clone() if to make a bit-by-bit shallow copy. A shallow copy implies that only the references are duplicated in the new object and not the referents. This means that changing a referent in your original object has also an effect on the destination object. To prevent this from happening, you need to make a deep copy, that is manually creating duplicates for the members you don't want to have shared. If all of your classes implement the Serializable marker interface, you can also make a deep copy by serializing using ObjectOutputStream and deserialize it using ObjectInputStream. Look what happens in the two following examples. Shallow copy Main.java:
outputs:
Deep copy
Main.java:
outputs:
For more information on cloning an on whether you should catch the CloneNotSupportedException or specify a throws clause, see the link below.
Further Information
Author of answer: Joris Van den Bogaert
Comments to this answer are only viewable by members. Login or become a member!
|
|
|
|
|