2011-11-09 20 views
3

クラスの静的フィールドに自身のインスタンスへの参照を保持させることはできますか?もしそうなら、他の誰も参照していない状態でJVMに生き続けるでしょうか?静的インスタンス変数はクラスのインスタンスを参照します

public class StatTest { 
    private static StatTest statTest; 

    public static StatTest getStatTest() { 
     if (statTest== null) { 
      statTest= new StatTest(); 
      statTest.init(); 
     } 
     return statTest; 
    } 

    private StatTest() { } 
} 
+1

これは*シングルトン*パターンを実装する1つの方法です。これはスレッドセーフではないことに注意してください(つまり、複数のスレッドから 'StatTest.getStatTest()'を呼び出すと問題が発生する可能性があります)。さまざまなシングルトン実装(いくつかのスレッドセーフな実装を含む)を比較するには、私が以前に書いた答え、http://stackoverflow.com/questions/7121213/singleton-instantiation/7121246#7121246をチェックしてください。 –

+0

ありがとうございました!私は今これが本当によく知られているパターンであることを認識しています。私は以前からシングルトンの名前を認識していますが、私はそれについて一度も読んだことはありません。今すぐ進める方法に関する情報を見つけるのは簡単でしょう。どうもありがとう! – joaerl

答えて

7

はい、これはSingletonデザインパターンのコンセプトです。

2

これは、クラスのシングルトンを作成する1つの方法です。

だからあなたの質問に答えるために:

  • をはい、getStatTest()メソッドへのすべての参照は、そのインスタンスを返します
  • 可能です。

シングルトンは、この方法を使用する場合、この方法はほとんど= getInstance()と呼ばれる)

1

リファレンスを保持している人がいなくても、jvmで活気づいていますか?

はい、クラス自体がガベージコレクションに適格でない限り(これはカスタムクラスローダーを使用する場合にのみ発生します)。

関連する問題