ただいま卒業研究でJavaの勉強をしているのですが、質問を聞いてください。
一つのインスタンスを複数のクラスで共有するにはどうしたらいいでしょうか?
例え子クラスから親クラスのインスタンスを参照しようとしても、コンストラクタが継承されないので新しくnewしなければなりません・・・
なんか見当違いな質問かもしれませんけど・・・
ずっと悩んでます、初心者です、よろしくお願いします。。。
答え:
どこかのクラスのメンバとして、持たせる方法がありますね。
public class MyClass {
// クラスは任意。例としてObjectとします。
public static Object obj = null;
}
使うときは、どこかのメソッドで
MyClass.obj.メソッド();
などと使います。
一般的なものに「シングルトン」という考え方(=デザインパターン)があります。
「シングルトン」の考え方に基づいた実装を行うと、同じ(仮想)マシンのメモリ上に、インスタンスは1つしかないことが保証できます。
下記に簡単な実装を例示します。
/** シングルトン実装クラス */
public class MySingleClass {
/** このクラスの唯一のインスタンス */
private satic MySingleClass instance = null;
/** コンストラクタ */
private MySingleClass() {
// privateのため、他のクラスからはインスタンス化できない
}
/** インスタンスを取得するためのメソッド */
public static MySingleClass getInstance() {
if (instance == null) {
// インスタンスが存在しない場合
// インスタンスを作る
instance = new MySingleClass();
}
// インスタンスを返す
return instance;
}
}
/** シングルトン使用クラス */
public class TestClass {
public testMethod() {
// 唯一のインスタンスを取得
MySingleClass single = MySingleClass.getInstance();
}
}
補足の質問:
はーなるほど・・・
そんなこともできるんですねー
ありがとうございました!この質問・回答は役に立ちましたか?
ウェブサイトのユーザーによる情報ポスト、JPQA.comのない保証の正しさ.