This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
When would the Clone method of Object come handy? and why?
I mean, in what case would I prefer to implement the Clonable interface, and call the clone method rather than create a new Insance of the Object?
Creating a clone of an object and creating a new object are two different things. Lets say you have a class Car that has member variables like colour, model, and the distance it has travelled. On creating a new object the values these member variables take are the ones you initialise them with in the constructor. But if you create a clone of the object then the clone has the same values for the member variables as the original object had. Hope that answers your question. If you have any doubts please let me know.
"Life is good"
Joined: Sep 24, 2009
Thanks, Vaibhav Mittal, it makes a lot of sense!
But another question if I may, when would I use a clone? why not to use the original Object?
Joined: Jun 11, 2008
You would want to use a clone when you want to have an object that is in the same state(by state i mean the values for the member variables is the same).
Lets say you have a situation where you might want to pass an object reference as an argument to a method but you do not want the state of your object that you pass as argument to change. In this case you can create a clone of that object and send it as an argument while you can retain your object as it is. Frankly, i have no idea why one would want to do this. But there could be a scenario where it is necessary. The important thing is know is that there is a difference between sending a cloned object reference as an argument and sending the original object as an argument. Hope that helps.
Do a search for Joshua Bloch Effective Java; there used to be a sample chapter available free of charge on the net. You need to find the older (1st) edition. If you find that free sample chapter, it says quite a lot about Object#clone().