I read Effective Java and there it\'s stated that a singleton is best implemented using enum.
enum
This approach is functionally equivalent to
Enums can't be inherited
And it's one of the best parts of enums being singletons.
If you can inherit from a singleton, it's not a singleton any more.