web-dev-qa-db-ja.com

Javaでインポートの名前を変更するか、同じ名前の2つのクラスをインポートします

Pythonでは、次のことができます。

from a import b as c

衝突する2つのインポートがあるので、Javaでこれをどのように行いますか。

306
Federer

Javaにはインポートエイリアシングメカニズムはありません。同じ名前の2つのクラスをインポートして、両方を非修飾で使用することはできません。

一方のクラスをインポートし、もう一方のクラスに完全修飾名を使用します。

import com.text.Formatter;

private Formatter textFormatter;
private com.json.Formatter jsonFormatter;
394
Bozho

Groovyにはこの機能があります

import Java.util.Calendar
import com.example.Calendar as MyCalendar

MyCalendar myCalendar = new MyCalendar()
51
sfussenegger

他の回答で既に述べたように、Javaはこの機能を提供しません。

この機能の実装は複数回要求されています。 as JDK-4194542:クラス名のエイリアス または JDK-4214789:インポートを拡張して、インポートされたタイプの名前を変更できるようにする .

コメントから:

これは不当な要求ではありませんが、ほとんど必須ではありません。完全修飾名をときどき使用することは、過度の負担ではありません(ライブラリが実際に同じ単純な名前を左右に再利用しない限り、スタイルが悪い)。

いずれにせよ、言語の変更に対する価格/性能の基準を満たしていません。

だから、すぐにJavaにこの機能が表示されることはないと思います:-P

48
siegi

Javaではそれができません。完全修飾名でクラスの1つを参照し、もう1つだけをインポートする必要があります。

18
sepp2k

今日、このエイリアス機能についてJEPドラフトをOpenJDKに提出しました。彼らがそれを再考することを願っています。

興味がある場合は、ここでJEPドラフトを見つけることができます。 https://Gist.github.com/cardil/b29a81efd64a09585076fe00e3d34de7

0
cardil