0

この質問は、一部の Java エキスパートにとっては誤解である可能性があります。しかし、静的ブロックではなくメインのような静的メソッドでオブジェクトを作成する理由を知りたいです。静的ブロックでインスタンス化すると、もちろんそれ以上使用しないと、不必要にオブジェクトが作成されることを理解しています。このアプローチで注意すべきことは他にありますか? これを Singleton Pattern と関連付けることができますか?

例えば:

public class MyClass {

    static {
        AnotherClass object = new AnotherClass();
            // Do Some operations here with object.
    }
}
4

1 に答える 1

0

主な理由は、実際にいつ実行されるかを制御することです。静的ブロック内のものは、クラスが最初にロードされたときに実行され、誤ってクラスがロードされる可能性があります (たとえば、クラスの定数を参照することによって)。

静的メソッドを持つということは、メソッドがいつ呼び出されるかを完全に制御できることを意味します (明示的に呼び出す必要があるため)。

シングルトンに関しては、熱心にロードされたシングルトンの Java イディオムは、インスタンスを静的フィールドとして初期化します。これは基本的に静的ブロックと同じように実行されます。

public class Singleton {
    private static final Singleton instance = new Singleton();

    private Singleton() {}

    public static Singleton getInstance() {
        return instance;
    }
}
于 2012-06-06T17:47:47.823 に答える