Gibt es Unterschiede bei der Verwendung eines "Inline-Imports" (ein vollständig qualifizierter Name) und des normalen Imports in Bezug auf Leistung, Arbeitsspeicher, Kompilierzeit usw. in Java?
%Vor%und
%Vor%Die Hauptsache, auf die Sie sich konzentrieren sollten, ist Lesbarkeit. Ich finde den zweiten besser lesbar.
In seltenen Fällen bevorzuge ich den zweiten Ansatz. Betrachten wir das folgende Szenario: Aus irgendeinem Grund schrieb ich eine Klasse und nannte sie File
. Ich tippte File file = new File(...)
und meine IDE importierte das java.io.File
für mich automatisch. Aber ich will diese Art von Objekt nicht, ich möchte meine File
-Klasse. Anstatt also die richtige Klasse zu importieren, bevorzuge ich den Inline-Import, nur dass andere Benutzer nicht mit der File
-Klasse von Java verwechselt werden.
In Bezug auf die Leistung sind sie genau gleich, und hier ist der Beweis -
Dies ist der Bytecode, der für das erste Snippet generiert wurde:
%Vor%Dies ist der Bytecode für die Sekunde:
%Vor%Nein, beide sind in Bezug auf Leistung, Speicher und Kompilierzeit identisch. Der einzige Unterschied zwischen ihnen besteht darin, dass der normale Import Ihre Tipparbeit spart und es lesbarer ist. "
Es spielt nur im folgenden Fall eine Rolle,
Wenn Sie eine Klasse verwenden möchten, die in mehreren Paketen verfügbar ist. Die Date-Klasse ist in java.util & amp; java.sql
Sie können eine der obigen Klassen am Anfang des Programms importieren und die qualifizierte Syntax für eine andere verwenden.
Nein, dies würde die Leistung Ihres Codes nicht beeinträchtigen. Importanweisungen machen Ihren Code lesbarer, weil Sie nicht Ihren gesamten Paketnamen schreiben. Aber manchmal haben Sie einen Konflikt von ClassNames, dann ist es ratsam, qualifizierte Namen zu verwenden.
In Java werden Klassen immer mit ihrem voll qualifizierten Namen im endgültigen Bytecode referenziert. Es passiert das erste Mal, wenn ein Objekt der Klasse erstellt wird (oder auf ein statisches Mitglied der Klasse zugegriffen wird).
Das heißt, import
wird vom Compiler verwendet, um auf Klassen mit ihrem unqualifizierten Namen zuzugreifen ( MyClass
anstelle von mypackage.MyClass
).
Es gibt also einen Unterschied zwischen dem Importieren der Klasse oder dem expliziten Schreiben des vollständig qualifizierten Namens - es ist nur eine Frage der Lesbarkeit, spart ein wenig Tipparbeit und hilft Konflikte zwischen Klassen mit demselben Namen zu vermeiden.