継承したコードの一部で、プロジェクト内のクラスと同じ名前のクラスが同じパッケージに存在する依存関係 jar を持つプロジェクトがある場所で、興味深い動作が見られます。
Eclipse プロジェクト:
src/com.abc.dE
com.abc.dEclassが存在するXYZ.jarに依存します。
このセットアップがJavaで合法であるかどうかに興味があります。Eclipseによると、エラーとしてマークされず、ワークスペース内のそのような既存のクラスの名前を変更しようとする場合を除いて、依存関係jar内の既存のクラスをシャドウする新しいクラスを作成できます-その後、次の警告が生成されます:
「リファクタリングされた要素へのバイナリ参照が見つかりました。更新されないため、続行すると問題が発生する可能性があります。」
そして、このフォワード リファクタリングが許可されます。ただし、競合する名前に逆方向にリファクタリングしたい場合は、次のメッセージが Eclipse に表示されます。
「「E」という名前のタイプは、パッケージ「com.abc.d」に既に存在します
そうですか
- 正しい Java
- Eclipse の動作に許容される矛盾または
- .Eclipse のバグですか?
ありがとうございました。