• 締切済み

インスタンスを共有するには

1つのインスタンスを他の複数のクラスで共有するには どうすればよいのでしょうか。 私が知っているは、生成時に共有したいインスタンスを渡す という方法です。 他にどのような方法があるのでしょうか。 ご存知の方がいましたらご教授くださいよろしくお願いいたします。

noname#61987
noname#61987
  • Java
  • 回答数1
  • ありがとう数2

みんなの回答

noname#49664
noname#49664
回答No.1

こういう場合の扱いとしては、デザインパターンの「シングルトン」というやつとして設計するのが一般的でしょう。クラス自体に、1つのインスタンスしか生成できない仕組みを用意してやるのですね。 考え方としては、まずコンストラクタの使用を禁止します。これは、コンストラクタをすべてprivateで実装すれば外部から一切newできなくなります。そして、getInstanceというようなメソッドを用意しておき、これを呼び出してインスタンスを取得するようにします。 このgetInstanceでは、あらかじめprivateフィールドにインスタンスを生成しておき、常にこれを返すようにしておきます。こうすることで、常にフィールドに保持されている同一のインスタンスが得られるようになります。

関連するQ&A

  • インスタンス生成について

    いつもお世話になっております。 今回はインスタンス生成について質問させて下さい。 String クラスのインスタンス生成は、 String str1 = new String(); のように明示的に new 演算子を用いる方法と、 String str2 = "hoge"; のように生成する方法がありますよね。 str2 の方は、JVM が(?) 勝手にコンストラクタを呼び出してくれて、 インスタンスを生成してくれる、という認識でよいのでしょうか? また、明示的に「 new 演算子 + コンストラクタ」でインスタンスを生成する場合と、 そうでない場合の使い分けなどはあるのでしょうか? そもそも String 以外に、このような複数のパターンでインスタンスを生成することができる クラスは他にもあるのでしょうか? 以上、ご教授宜しくお願い致します。

    • ベストアンサー
    • Java
  • 動的に生成されるインスタンス間のやりとりについて

    あるクラスのインスタンスが動的に複数生成される状態で,一つのインスタンスから, 複数の他インスタンスのメンバ関数(仮に関数A)を呼びたいと考えています. そこでstaticなインスタンスのリストのようなものを設けようと考えました. 各インスタンスの関数Aへ関数ポインタの配列を定義し, それによって上記を実現しようと思いました. しかし,インスタンス生成前にインスタンス名を指定して (instance_name_.*p)(); という様に呼べるわけもなく,どう動的にインスタンスのリストを保持するかが思いつきません. 説明が下手ですいません.どなたか教えていただけますでしょうか. よろしくお願いします. 環境 Windows XP, cygwin

  • ActionScript3.0(アクションスクリプト3.0)でMovieClipインスタンスを配列で生成する方法

    よろしくお願いいたします。 アクションスクリプト3.0において、あるMovieClipクラスから複数のMovieClipインスタンスを作り、それぞれを独立して制御させたい時に、 インスタンスを生成する際、配列でしようとしたのですがエラーとなりうまくいきません。 var my_mc[i]:MovieClip = new MC(); 上記の宣言を繰り返し処理により複数インスタンス生成をしようと思っていました。 MovieClipインスタンスを配列で生成する場合は別の方法があるのでしょうか?それともそもそもできないのでしょうか? また、MovieClipインスタンスをそれぞれ独立して制御させたい場合、別の方法などありますでしょうか? 以上、間違った表現等あるかもしれませんが、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • アンドロイドで、別のクラスのインスタンスを呼ぶ方法

    アンドロイドの場合、別のクラスのインスタンスを呼び出すにはどうしたら良いですか? どうしてもわからずとても困っています。どうかご教授下さい。 例えば、Activityを継承しているクラスAがImageViewを継承しているクラスIのインスタンスを呼び出したいとします。 通用ならクラスA内で、 ExtendsImageView myExtendsImageView = new ExtendsImageView(); なんてインスタンス変数もたせて、 myExtendsImageViewから変数なりメソッドなり呼び出せれば済む話なんですが、 アンドロイドの場合、 アプリの起動時に自動的にActivity継承クラスとImageView継承クラスのインスタンスが生成されるようです。 そしてそのインスタンスがどこにあるかわからないので、呼び出すことができません。 無理やり、 ExtendsImageView myExtendsImageView = new ExtendsImageView(); と新しくインスタンスをつくるのも変な気がします・・・。 どのようにすれば別のクラスのインスタンスを呼び出すことができるでしょうか?どうかご教授下さい。。

  • インスタンスとオブジェクト 生成

    クラスのオブジェクトを生成するときに(newをつかって) ●インスタンスを生成する。 ●オブジェクトを生成する。 と参考書に書いてありますが、言い方はどちらでもいいそうです。 でも、2種類の言い方がるということは厳密には意味が違うような気がするのですが、皆さんはどう思いますか? またどちらの言い方を使っていますか? どちらが正しいのでしょうか?

    • ベストアンサー
    • Java
  • CxxxViewのインスタンスはいつ作られるの?

    環境はWIN98 VC++6.0 MFCです。 今まで何も考えずウィザードに任せて、CxxxView内にコードを書いていましたが、良く考えるとCxxxViewってクラスですよね。 そうするとどこかでインスタンスが生成されていると思うのですが、どれはどこなのでしょうか?

  • XmlElementのインスタンス化について

    お世話になってます。 XMLのカテゴリで質問しましたが、回答をえられなかったのでこちらで質問させて頂きます。 XmlElementをインスタンス化するときに分からないことがあります。 通常XmlElementを生成するときにはXmlDocumentのCreateElementを呼び出し生成しますが、 XmlElementを直接生成しないのは何故でしょうか。(してはいけない理由は何でしょうか。) 自分で調べた限りではmsdnにも「XmlElement を直接インスタンス化しないでください。」 としか書いてありません。 http://msdn.microsoft.com/ja-jp/library/system.xml.xmlelement.xmlelement.aspx 申し訳ありませんが、詳しい方ご教授お願いします。

  • 同一クラスインスタンス名で別クラスのインスタンス作成方法(C++)

    下記ソース(Java)の処理をするような、C++の実装方法を教えていただきたいです。 【処理内容】 クラスBのインスタンスを保持しており、クラスBのインスタンス名と同一であるクラスAのインスタンス生成 ClassA A_Instance = (ClassA)Class.forName(B_instance.name).newInstance(); 要はクラスインスタンスの名前の求め方がわからないのです。それさえわかれば、newしてクラスポインタを返すメソッドを用意すれば何とかなると考えていますが。 ※C++のAPI一覧はどこにあるのだろうか・・・

  • C# クラスのインスタンスについて

    クラス(ClassA)を作成した後に別のクラス(ClassB)内でClassAインスタンスを作成したとします。 このインスタンスをさらに別のクラス(ClassC)で使用したいと思うの ですが可能なんでしょうか? 要するに1つのインスタンスを他で使いまわすような事ができないの かなって思っています。 自分で調べると「Singletonパターン」という方法があるようですが 他の方法もあれば知ってみたいと思っています。 ※環境はWinXP、VS2005 C# です。 以上ですが、よろしくお願いいたします。

  • 総称型からインスタンスの生成を行いたいです。

    総称型からインスタンスの生成を行いたいです。 はじめまして。 総称型からインスタンスの生成を行う方法を調査しています。 C#での開発経験がありますが、そちらでは構文としてコンストラクタ制約が存在しましたが、 Javaにはそれが無いようで、コンパイルすら通せず悶々と調査をしていますが、Java自体はじめて触れるため非常に効率が悪いです…。 どのような手段でも構いませんので、総称型からのインスタンス生成に関するヒントをいただきたいです。

専門家に質問してみよう