- ベストアンサー
コンストラクタの引数の中のnew?
はじめまして☆ java初心者ですが、意味がわからなくて困っています。 オブジェクトをnewする時、たまにコンストラクタの引数部分に newの記述がある時があるのですが、これはどういう意味でしょうか? (何のオブジェクトを作成しているのでしょうか?) よかったら、教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
例をあげて、説明してみます。 ---------- Sample.java ---------- 1:class A { 2: public A() { 3: System.out.println("A#A() -- START"); 4: System.out.println("A#A() -- END"); 5: } 6:} 7: 8:class B { 9: public B(A param1) { 10: System.out.println("B#B(A param1) -- START"); 11: System.out.println("B#B(A param1) -- END"); 12: } 13:} 14: 15:public class Sample { 16: 17: public static void main(String[] args) { 18: System.out.println("Sample#main(String[] args) -- START"); 19: 20: B instance1 = new B(new A()); 21: 22: System.out.println("Sample#main(String[] args) -- END"); 23: } 24: 25:} 26: ---------- Sample.java ---------- この例だと、 > 20: B instance1 = new B(new A()); の部分がコンストラクタの引数に new を使用しています。 これは、BクラスのB(A param1)と言うコンストラクタに、 Aクラスのインスタンスを渡していると言う事です。 new A()の部分で、Aクラスのコンストラクタを呼び出して、インスタンスを生成してます。
その他の回答 (2)
- ProKaseifu
- ベストアンサー率51% (98/192)
HogeClass hoge = new HogeClass(new HogeHogeClass()); ↑こーゆー記述ですか? No1さんの言うように何をしているのかはプログラムによるのでその内容を確認してください、としか言えません。
おそらく質問の記述だけじゃ誰も回答できないのではないでしょうか。 どのようなプログラムを書いていて、何のクラスを使おうとしているのか、どのような記述をしているのかを示さないと、プログラムの種類は人それぞれ限りなくあるので回答できないかと。 回答できる方がいたらすいません。 一つ言えるとしたら、newの後の名前をAPI等で調べてみると良いと思います。
お礼
Yanchさん ProKaseifuさん Rycleさん ご回答大変ありがとうございます。m(_ _) m なんとなく意味がわかりました! ちなみにわからなかったコードは interface A{void x();} class B implements A {public void x(){}public void y()}} class C extends B {public void x()} java.util.List<A> list = new java.util.ArrayList<A>(); list.add(new B()); list.add(new C()); のnew B() ,new C() という記述のいみが良くわかりませんでした。 ご回答ありがとうございました。