Java, Copy Constructors, and clone()
The need to copy objects come up frequently in object-oriented programming. The are many times when an object needs to be copied, so a new object with the same state can be modified.
There are several solutions for this. Which one is best? That's, unfortunately, debatable.