Originally posted by Bill Shirley:
Some people would suggest avoiding clone() altogether
... and others would suggest avoiding finalize() altogether, too.
Both finalize() and clone() are relics from the very earliest days of
Java. They aren't as well thought-out as later features. Luckily, extremely few programs really need finalize() [use weak or phantom references instead], and few need clone().
I consider cloning of arrays to be a special case. It's the most efficient way to copy a whole array, and there are no confusions with how to override the array-cloning method, because you can't.