521 Stimmen

Importname in Java ändern oder zwei Klassen mit demselben Namen importieren

In Python können Sie eine:

from a import b as c

Wie würden Sie dies in Java tun, da ich zwei Importe habe, die miteinander kollidieren.

675voto

Bozho Punkte 570413

In Java gibt es keinen Import-Aliasing-Mechanismus. Sie können nicht zwei Klassen mit demselben Namen importieren und beide unqualifiziert verwenden.

Importieren Sie eine Klasse und verwenden Sie den vollqualifizierten Namen für die andere, d. h.

import com.text.Formatter;

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

106voto

siegi Punkte 5139

Wie bereits in den anderen Antworten erwähnt, bietet Java diese Funktion nicht.

Die Implementierung dieser Funktion wurde bereits mehrfach gefordert, z.B. als JDK-4194542: Klassennamen-Aliasing o JDK-4214789: Erweitern Sie den Import, um die Umbenennung des importierten Typs zu ermöglichen .

Aus den Kommentaren:

Dies ist keine unangemessene Forderung, wenn auch nicht unbedingt notwendig. Die gelegentliche Verwendung von voll qualifizierten Namen ist keine unangemessene Belastung (es sei denn, die Bibliothek wirklich immer wieder dieselben einfachen Namen verwendet, was schlechter Stil ist).

Auf jeden Fall erfüllt sie nicht die Anforderungen an das Preis-Leistungs-Verhältnis für eine Sprache. ändern.

Ich vermute also, dass wir diese Funktion in Java in nächster Zeit nicht sehen werden :-P

89voto

sfussenegger Punkte 34431

Es ist wahrscheinlich erwähnenswert, dass Groovy hat diese Funktion :

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

MyCalendar myCalendar = new MyCalendar()

26voto

sepp2k Punkte 352762

In Java ist das nicht möglich. Sie müssen auf eine der Klassen mit ihrem voll qualifizierten Namen verweisen und nur die andere Klasse importieren.

23voto

Chris Suszyński Punkte 1407

Heute habe ich einen JEP-Entwurf an OpenJDK über diese Aliasing-Funktion eingereicht. Ich hoffe, sie werden es noch einmal überdenken.

Wenn Sie Interesse haben, können Sie hier einen GEP-Entwurf finden: https://gist.github.com/cardil/b29a81efd64a09585076fe00e3d34de7

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X