パッケージを別のパッケージにリダイレクトしたい。たとえば、「packageA」というパッケージと「packageB」という別のパッケージがあり、packageA をインポートすると packageB がインポートされます。パッケージをコピーせずにこれを実行できるようにしたい。また、packageB の代わりに packageA がインポートされた場合、メソッドを実行する方法はありますか?
2 に答える
簡単な答え: いいえ。
長い答え: パッケージはクラスの一部であり、import
ステートメントはコンパイル時に読み取られ、解釈されません。あなたが望むことは、ねじれた Java コンパイラーによって行われなければなりません。一部のコンパイラはオープンソースであるため、これを実行できる可能性はありますが、そのような機能が見つかるとは期待していません。
別の答え: Netbeans、Eclipse などの IDE を使用している場合。パッケージ名を別の名前に変更するのに役立つリファクタリング ツールがたくさんあります。
import
ステートメントがどのように機能するかを見てみましょう。
まず、import
クラスまたはインターフェースのみをインポートします。パッケージをインポートすることはありません。特に、次のようなもの
import java.util.*
という名前のパッケージ内のすべてのクラスとインターフェースをインポートしますjava.util
。このパッケージは単なるクラスとインターフェースのコンテナであるため、「パッケージのインポート」について語っても意味がありません。パッケージ自体は、コンパイルまたは実行されるものではありません。
そうは言っても、「リダイレクト」について話すのは意味がありません。なぜなら、何にリダイレクトするのでしょうか? 「packageA」からクラスをインポートする場合は、直接インポートするだけです。
同様に、packageA からクラスをインポートすると、そのクラスのメソッドにアクセスできます。そのクラスは packageA に存在するため、packageB からインポートしようとしても意味がありません。packageB に同じ名前のクラスがあっても、それらは 2 つの異なるクラスです。実際、これが Java のパッケージの主な理由です。2 人の異なるプログラマーによって書かれたクラスの名前の衝突を避けるためです。
そうは言っても、「インポートのリダイレクト」で解決しようとしている問題に遭遇したことはありますか?