1

単一の ton クラスの空のコンストラクターがあると仮定すると、パブリック getInstance メソッドからインスタンスを返すには、以下の 2 つの方法のどちらが適していますか?

  1. クラスレベルの初期化 {

    public class ClassName{
    
    private static ClassName instance = new ClassName ();
    }
    

    }

  2. ダブルチェックロックによる遅延読み込み

    if (null == instance) {
    
            synchronized (this) {
        if(null == instance) {
            instance = new className();
                }
        }
    }
    

クラスレベルの初期化は、ここでは害を及ぼさないと考えていました。しかし、専門家からそれを確認したいと思います。助けてください

4

1 に答える 1

1

プライベート コンストラクターとfinalインスタンス フィールドが必要です。理想的には、クラスもそうあるべきfinalです。これらすべてを行う最も簡単な方法は、列挙型を使用することです

public enum Singleton implements MyInterface {
    INSTANCE;
} 
于 2013-10-10T06:02:45.190 に答える