Defender-methods: A chance to finally retrofit Cloneable with clone method?

Gernot Neppert mcnepp02 at
Mon Aug 8 10:15:41 PDT 2011

I was wondering whether it would be possible to retrofit the interface 
java.lang.Cloneable with a public clone method, now that 
defender-methods will be available.
Even after living without a standard cloning mechanism im Java for 10+ 
years, I'd still love to have one!

For the default implementation, I can see the following choices:

1. Invoke the built-in cloning mechanism through Object.clone(). Since a 
static defender method could not directly invoke Object.clone through 
its argument, it would have to be either native or delegate to some kind 
of  native "System.systemClone" method to achive this.

2. Throw CloneNotSupportedException.

3. Throw UnsupportedOperationException.

4. Return the object itself (shallow clone).

Personally, I think 2.) would be by far the worst choice, because it 
would make it necessary for the interface to declare the checked 
CloneNotSupportedException, somehow negating the whole purpose of having 
a clone method in an interface at all!

What do the experts think?

More information about the coin-dev mailing list