0

したがって、このコードは試験で与えられたもので、問題は何が問題なのかということでした。タイプの新しいオブジェクトを作成するためのものですSomeClassが、以前に作成されていない場合に限ります。

class Foo {
    private SomeClass x = null;
    public synchronized SomeClass getX() {
        if (x == null)
            x = new SomeClass();
        return x;
    }
}

私の推測では、それ以外の場合は複数のコピーが存在する可能性があるため、 xandgetXは static と宣言する必要がありますx。あれは正しいですか?もしそうなら、それはコードの唯一の問題ですか?

4

1 に答える 1

1

シングルトン ファクトリ メソッドを構築しようとしています。

public class Foo {
    private static SomeClass x = null;
    public static synchronized SomeClass getSomeClass() {
        if (x == null)
            x = new SomeClass();
        return x;
    }
}

これが本当に必要な場合は、SomeClass を Foo の内部クラスにし、SomeClass のコンストラクターを非公開にする必要があることに注意してください。

于 2013-04-07T14:55:19.413 に答える