@Documented
@Retention(value=SOURCE)
@Target(value=TYPE)
public @interface Singleton
Class annotation to make class singleton.
Singleton can be initialized in static initialization of the class or lazily (on first access)
To make singleton lazy it is enough to use @Singleton(lazy=true)
Lazy singletons implemented with double check locking and volatile field