• ベストアンサー

インスタンス生成で、○○.xxx();といった手法の意味

入門的に、インスタンスの作り方は、 AAA abc =new AAA(); なのですが、 VVV qqq = new ○○.xxx(); とこのような手法を用いた、方法があるようなのですが、意味がよくわかりませんので、サンプル、または、参考サイトを教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • UKY
  • ベストアンサー率50% (604/1207)
回答No.4

1. VVV v = new AAA().xxx(); これは AAA クラスのインスタンスを生成した後そのまま xxx というメソッドを呼んでいます。 AAA a = new AAA(); VVV v = a.xxx(); とおなじです。 2. AAA.BBB v = new AAA.BBB(); こちらは入れ子クラスのインスタンス生成です。 AAA クラスの中にある BBB クラスのインスタンスを生成します。 本題ではありませんが、「手法」と「文法」はきっちり区別された方がよいかと思います。今回の質問は手法ではなく文法に関する質問ですね。

その他の回答 (4)

  • kztk
  • ベストアンサー率53% (59/110)
回答No.5

これだけだと、○○に()がついていないので、○○は単なるパッケージ名でxxxがクラス名という可能性があると思いますが。

回答No.3

ちょっと間違えました。 わかると思いますけど、newが2個重なっています。 以下が正しいです。 ○○ oo = new ○○(); VVV qqq = oo.xxx();

回答No.2

「new ○○」とした時点ですでにインスタンスが生成されます。生成したインスタンスを、変数に格納するかどうかは自由です。 で、変数に格納せずともインスタンスは使用できます。ですので、インスタンスのメソッドにアクセスしているだけです。 VVV qqq = new ○○.xxx(); は、 ○○ oo =new new ○○(); VVV qqq = oo.xxx(); という記述と等価で、ooというインスタンスをそれ以降使用しないために、変数への格納を省略した形といえます。 ちなみにNo1さんの内容は、デザインパターンにおけるシングルトンの説明であり、上記の話とは関係ないと思っていいです。少し勘違いをされただけだと思います。

  • asahina02
  • ベストアンサー率47% (95/202)
回答No.1

こんな感じになってると思われます。 class ○○ {  public VVV xxx() {   return( new VVV() )  } } このような手法はいろんなパターンがありえると思うのですが以前私が経験したパターンの場合、以下のような感じでした。 ようはクラスZZZのインスタンスをシステムで一つしか持たせたくない場合です。 ※しばらく離れていたので文法に多少間違いがあるかもしれません。ご容赦ください。 class ZZZ {  static private ZZZ m_zzz = null;  private ZZZ() {   //コンストラクタは外部からアクセス不可  }  static public ZZZ xxx() {   if( m_zzz == null ) {    m_zzz = new ZZZ();   }   return( m_zzz );  } }

関連するQ&A