Originally posted by Consta Chertakovsky: How to prevent singleton object from the object cloning. ... implement clone method with throws new UnclonableObjectexception. If any other way we have to do it?
the easiest and the normal way is to leave off "implements Cloneable". Then any caller gets a similar exception as the one supposed by you.
Making any constructor private could not keep the singleton from being cloned because clone(), if Cloneable, bypasses any constructor. This bypassing any constructor is the reason for better performance.