- 締切済み
クラスの衝突
同じパッケージ名で同じクラス名が複数存在した場合 うまく動かなくなるかと思いますが、それを検出する 方法はあるのでしょうか? 考えられる方法は ・貼られてるクラスパスを追っていき重複を探す。 ・貼られてるクラスパスのjarファイルを解凍して重複を探す。 正直この方法だと辛すぎるので 何かいい方法がありましたらよろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- liar_adan
- ベストアンサー率48% (730/1515)
回答No.1
もう衝突はしてしまったのでしょうか? クラス名と言うより、パッケージ名の衝突だと思うのですが…。 クラスパスで複数のパスをルートにしている場合や、 複数のjarファイルを指定している場合に起こり得ます。 その際は、衝突しているパッケージ名を探すしかないように思います。 この場合、複数の箇所に、同じ名前のパッケージを置いている事の方が問題があります。 そうならないために、パッケージの命名に、 インターネットアドレスを流用する方法が推奨されています。 たとえば「教えてgoo」氏がクラスを書くとしたら、 package jp.ne.goo.oshiete; というパッケージの下に置くようにします。 パッケージ名が衝突しなければ、クラス名が衝突するという事態は、まず起こらないと思います。 まあ、同じ.javaファイルに複数のクラスを記述した場合はあり得ますが、 普通はそういうことはしません。 したとしても、できる.classファイルは(局所的なパッケージには)一つだけです。 また、publicにできるクラスは一つの.javaファイルについて高々一つです。 答えにはなっていないかもしれません。失礼しました。
お礼
回答ありがとうございます。 まず、補足ですが、もう衝突しちゃいました(笑) ただ、今回はなんとか解決することができました。 その解決過程があまりに重労働だったので今後のために 何かいい方法がないか伺った次第です。 やはり衝突がおきないように工夫するのが正しいですかね。 もうしばらく、のんびりと他の方の回答を待ってみたいと思います。 ありがとうございました。