在我的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;
}
}

07-27 19:19