- ベストアンサー
オブジェクトの配列について
Javaを勉強中の初心者です。 どなたか教えてください。 次のクラスTDobjはコンパイルできて、実行結果もでました。 public class TDobj { public static void main(String[] args) { Dog puppy = new Dog(); Dog[] myDogs = new Dog[3]; System.out.println("puppy = " + puppy); for(int i = 0; i < myDogs.length; i++) { System.out.println("myDogs[" + i + "] = " + myDogs[i]); } } } C:\MyJava>java TDobj ・・・実行結果 puppy = Dog@1ac04e8 myDogs[0] = null myDogs[1] = null myDogs[2] = null ところが、全く同じ中身のクラスTDobj2は次のようなコンパイルエラーがでました。 C:\MyJava>javac TDobj2.java TDobj2.java:5: Dog の Dog(java.lang.String) は () に適用できません。 Dog puppy = new Dog(); ^ エラー 1 個 何故こんなことになってしまったのか教えていただきたいのですが。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
TDobjクラスの中にDogのクラスの記述が無いように思います。ですが、コンパイルは通っているということは、どこかにDogクラスの記述が書かれたファイルがあるはずです。 基本的に最初のコンパイルの時はそのファイルを参照することが出来たにもかかわらず、TDobj2の時はそれが出来なかったことになります。 私が思うには『パス』の問題ではないかと思います。 以下にサイトをご紹介します。お役に立てばよいのですが・・・
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
class Dog が書かれていないので推測ですが、 コンストラクタが引数無しでは定義されていないで、 String を引数に取るものしかないのではないでしょうか
お礼
早速ご回答いただきありがとうございました。 KuroGin
お礼
早速ご回答いただきありがとうございました。 「パス」については、今後勉強したいと思っています。 KuroGin