File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Cloning Doubt Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Cloning Doubt" Watch "Cloning Doubt" New topic

Cloning Doubt

Animesh Shrivastava
Ranch Hand

Joined: Jul 19, 2004
Posts: 298
As per the API for the ArrayList's clone method, it says that:

According to what i have understood from the statement is that:
The ArrayList's elements inside the List are not copied, they point to the same reference. That is, if i change an element in the original arrayList, this change can as well be viewed in the Cloned List.
Am i right?

This program explains what Cloning in ArrayList does:

The output shows:

I have gone through the ArrayList code and they have used System.arrayCopy() method to copy the elements of the original ArrayList to the Cloned ArrayList. So the behavior, but why such behavior?
Doesnt this falsify the meaning of shallow cloning?
Nathaniel Stoddard
Ranch Hand

Joined: May 29, 2003
Posts: 1258
System.arrayCopy does a shallow copy also, so no it doesn't falsify the meaning of shallow cloning. For one thing, collections can't really make any assumptions about the types of objects that they hold. They may or may not be able to be clonable, so promising that an ArrayList will return a deep-copy would be stupid, since it may be impossible!

I agree. Here's the link:
subject: Cloning Doubt
It's not a secret anymore!