在我的Java学习历程中,我遇到了用以下代码注释的代码:
/**
* Singleton instance - no need to lazy init as the class holds no state.
*/
public static final SuperParentMarshaller instance = new SuperParentMarshaller ();
这是什么意思?这将是什么样的课程?是目的吗
先感谢您。
最佳答案
这是您所提到的热切初始化。在对该对象的请求之前,该对象已经被初始化。使其变得懒惰意味着对象将在第一次调用时初始化。这是一个单一的设计模式。在整个应用程序中,只有一个此类的对象。
// eager loading of INSTANCE
public class Singleton
{
//initailzed during class loading
private static final Singleton INSTANCE = new Singleton();
//to prevent creating another instance of Singleton
private Singleton(){}
public static Singleton getSingleton(){
return INSTANCE;
}
}
延迟初始化为:
// lazy initialization
public class Singleton
{
//initailzed during class loading
private static final Singleton INSTANCE;
//to prevent creating another instance of Singleton
private Singleton(){}
public static Singleton getSingleton(){
// object will be initialized on it's first call.
if(INSTANCE == null)
INSTANCE = new Singleton();
return INSTANCE;
}
}