- ベストアンサー
インスタンスについて
個人的にJavaの勉強を始めた者です。 サンプルのソースをいただいたのですが、質問があります。 package xxxx.xxxxx.xxxxx; import yyyy.yyyy.yyyy; public final class ABC { /** 自クラスのインスタンス private static final ABC _SELF = new ABNC(); 中略 } 1.このように、自クラスのインスタンスを作成するのは何故でしょうか? 2.>_SELFのように "_"を先頭につけるのは、理由がるのでしょうか? サンプルを提供してくれた方には月曜まで連絡がとれません。 Javaのエキスパートの皆さん、よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
これだけでは分からないけど、シングルトンというクラスのインスタンスを一つだけにする手法かな。コンストラクタがprivateなら間違いなくこれですね。クラスの外からはインスタンスを作れない。 変数名の先頭をアンダースコア(_)にするのはC言語などだとライブラリ等で使う変数名ですね。アプリケーションが使う名前と衝突しないようにそういうルールがある。Javaでは良くない(標準的な命名規則に合わない)使い方だと思う。
その他の回答 (1)
- SAKENOSAKA
- ベストアンサー率32% (78/240)
シングルトンではオブジェクトのインスタンスを 複数生成してしまうことを制限できます。 中略のところのメソッドに以下のようなメソッドが あるかもしれません。 public ABC getInstance( ){ return _SELF; } このようなつくりにしておくとクライアント側では newでインスタンスを生成するのではなく、クラスが 保持する唯一のインスタンスを返すことになります。 abc = abc.create( ); //←つねに_SELFがかえるので abc = abc.create( ); // 同じです ---- 適用しない場合は abc = new ABC(); //インスタンス作成でも abc = new ABC(); //別ものになります わかりますか? _が付いている件は命名規則ですね。 開発者間での約束を規定したものです 定数の場合は英語大文字とかいう取り決めに過ぎません。
お礼
回答ありがとうございました。 勉強になりました。
お礼
回答ありがとうございました。 勉強になりました。