- 締切済み
パッケージ名をマッピング等して複数名で参照したい
とんでもない質問かもしれませんが、もし可能なら是非行いたいことがあり、ご教授下さい。 Javaのソース(hogehoge.java)にパッケージ名を付けています。 例:Package hoge.test; このソースは通常のJavaクラスであり、public static void mainを含まない部品群のクラスだと思って下さい。 このクラスをjarファイルとしてまとめて各プロジェクトで利用しているものとします。 さて、ここからが本題です。 この部品群のパッケージ名を変更しなければならなくなった場合、通常なら部品群であるソースのパッケージ名を変更しなければならないと思っています。 (例えば規約変更の影響で) ただ、この名前で既に他のプロジェクトで利用していることもあり、この部品群を利用する為に記述しているimport句を全て直して行くというのは大変です。 また、部品群の障害や拡張等があった場合に部品群だけを提供することにしており、他人がこの部品群を利用して作成したものが動かなくなってしまいます。 そこで、これら部品群のパッケージ名はそのままとし、別名のパッケージ名で呼び出すというマッピングの様なことは可能なのでしょうか? ○今までのプロジェクトでの指定方法 import hoge.test.hogehoge; ○今後のプロジェクトでの指定方法 import org.hoge.test.hogehoge; 以上、宜しくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
import hoge.test.hogehoge; にあった今までのクラスを import org.hoge.test.hogehoge; にすべて移動させた上で import hoge.test.hogehoge; には同名のクラスを作成し、publicなクラスは移動した クラスを継承してしまうという逃げ方はどうでしょう? 嫌な逃げ方ですが・・・。 もちろんimport hoge.test.hogehoge;のクラスは すべて@deprecated扱いで。
- chaoruko
- ベストアンサー率53% (7/13)
eclipseなどのリファクタリングしてがっつり関連ファイルごとパッケージを変更するしかないと思いますよー リファクタリングは便利ですので試してみてください。 マッピングはできないと思います
お礼
ご回答いただき、ありがとうございます。 やはり、マッピングの様な事は出来ませんか・・・orz リファクタリング、便利ですね! ただ、質問にも書きました通り、部品群として提供しているもののため 私以外の方々への変更も依頼しないといけなくなります。 既に開発者の手から離れて利用されているものもありますので、 部品群の改変時にそれだけの入れ替えが出来ないという問題があります。 二重に持つしかないんですかね・・・
お礼
案を頂き、ありがとうございます。 私自身も継承を考えてみたのですが、本来のクラスのコンストラクタが 不可視(例えばprivateだったり)のものが存在する場合、 別のコンストラクタを明示的に宣言しないといけなくなり、 従来のパッケージでそのまま利用することが出来なくなってしまいます。 やはり、過去に開発したものについても全てパッケージ名を 新しくする方法しかないのかもしれませんね。。