Specifically in Java, what are the uses of singletons? Seems like whatever can be done with a singleton can also be done just with static methods and variables. Is there something I'm missing. Many users suggest lazy loading as a reason however it looks like that's not really a benefit in Java.
The only benefit I can think of is that the implementation could be enhanced though a overridden implementation in a new class, which is substituted in the getInstance() method.
Update/edit:
Advantage of Singleton over static is that former is more object oriented than later. With Singleton, you can use Inheritance and Polymorphism to extend a base class, implement an interface and provide different implementations.
(Looks like this is a way to achieve results similar to overriding of static methods in Java.)
Are there any other advantages aswell?