• 締切済み

nullのエラー

C:\game\sound\Sound.classというプログラムを実行しようとすると「Exception in thread "main" java.lang.NullPointerException」というエラーがでました。 SoundクラスでSoundの値にnullを使っていません。 これをc:\desktop\sound\Sound.classという風にプログラムの入ったファイルをフォルダごと移動させて実行させると無事に実行できました。 調べてみると、C:\game\waveというフォルダにSound.classという同じ名前のプログラムがあり、こちらのプログラムの中のSoundクラスのSoundの値でnullを初期値設定している部分がありました。 geme--т--sound------soundクラス-----null値なし⇒実行できず     |--wave-------soundクラス-----null値あり geme-----wave---soundクラス-----null値あり desktop--sound---soundクラス-----null値なし⇒実行できた 自分なりに考えたのは、Javaの場合、同じプロジェクトの中で異なるパッケージにあるプログラムでも、public宣言しているものは参照してしまうということなのかと考えました。 このような考え方であっているのでしょうか。

みんなの回答

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

タイトルと質問の内容が一致していないわね。 答えは既に経験していると思うけど Yesよ。 Javaはパッケージが異なっても 同じ名称のクラスを作成することができるわ。 CoreのAPIで例を挙げれば Listクラスね。 例えば java.util.List java.awt.List の2つがあるわ。 もしも両パッケージがimportされてしまうと 本文の中でListと記述するときjavaはどっちのパッケージなのか 判断することができないのよ。 その場合は面倒でも本文で java.util.List myList = ~ のように記述してあげる必要があるわ。 また、まったく同じパッケージで同じクラスがCLASSPATHに指定されてることもあるわね。 同じ内容ならいいけど、中身が異なっている場合は注意が必要よ。 優先度は・・・ 調べれば判るから省略。

beeds
質問者

お礼

質問をうまく書けずにすみません。 回答ありがとうございました。

関連するQ&A