JavaのSingletonパターンについての質問です。
public final class Singleton { private static Singleton theInstance; private Singleton() {} public static Singleton getInstance() { if(theInstance==null) { theInstance = new Singleton(); } return theInstance; } }
getInstanceメソッドを始めて呼び出すときはインスタンスSingletonの参照が返されます。
二回目以降はこの生成したインスタンスの参照が返されるとは思うのですが、どうしてそうなるのでしょうか。
このコードでははじめは変数theInstanceは初期化しておらず、値はnullです。
一回目の呼び出しではnullなので、if文の中身が実行され、インスタンスが返されるわけです。
二回目以降呼び出す時、二行目のtheInstanceには参照が入っているから、インスタンス生成は行われず、この参照が返ってくるのだと思われます。
こういう理屈だと思うのですが、腑に落ちません。
二回目以降のtheInstanceになぜ参照がはじめから入っているのかが良く分かりません。
一度目の結果(インスタンスが生成され、theInstanceにはその参照が入っている)が、二度目以降に反映されている(theInstanceはnullではない)のはなぜでしょうか。
回答よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/08/18 11:45