Antworten:
Siehe Dokumentation
Die statische Importdeklaration ist analog zur normalen Importdeklaration. Wenn die normale Importdeklaration Klassen aus Paketen importiert, sodass sie ohne Paketqualifizierung verwendet werden können, importiert die statische Importdeklaration statische Elemente aus Klassen, sodass sie ohne Klassenqualifizierung verwendet werden können.
Wann sollten Sie den statischen Import verwenden? Sehr sparsam! Verwenden Sie es nur, wenn Sie sonst versucht wären, lokale Kopien von Konstanten zu deklarieren oder die Vererbung zu missbrauchen (das Antipattern der Konstantenschnittstelle). Mit anderen Worten, verwenden Sie es, wenn Sie häufigen Zugriff auf statische Elemente aus einer oder zwei Klassen benötigen. Wenn Sie die statische Importfunktion überbeanspruchen, kann dies dazu führen, dass Ihr Programm nicht mehr lesbar und nicht mehr wartbar ist und der Namespace mit allen von Ihnen importierten statischen Elementen verschmutzt wird. Leser Ihres Codes (einschließlich Sie, einige Monate nachdem Sie ihn geschrieben haben) wissen nicht, aus welcher Klasse ein statisches Mitglied stammt. Das Importieren aller statischen Elemente aus einer Klasse kann die Lesbarkeit besonders beeinträchtigen. Wenn Sie nur ein oder zwei Mitglieder benötigen, importieren Sie diese einzeln. Bei sachgemäßer Verwendung kann der statische Import Ihr Programm lesbarer machen.
Es gibt keinen Unterschied zwischen den beiden von Ihnen angegebenen Importen. Sie können jedoch den statischen Import verwenden, um uneingeschränkten Zugriff auf statische Mitglieder anderer Klassen zu ermöglichen. Wo ich das früher machen musste:
import org.apache.commons.lang.StringUtils;
.
.
.
if (StringUtils.isBlank(aString)) {
.
.
.
Ich kann dies tun:
import static org.apache.commons.lang.StringUtils.isBlank;
.
.
.
if (isBlank(aString)) {
.
.
.
Weitere Informationen finden Sie in der Dokumentation .
Der statische Import wird verwendet, um statische Felder / Methoden einer Klasse zu importieren, anstatt:
package test;
import org.example.Foo;
class A {
B b = Foo.B_INSTANCE;
}
Du kannst schreiben :
package test;
import static org.example.Foo.B_INSTANCE;
class A {
B b = B_INSTANCE;
}
Dies ist nützlich, wenn Sie häufig eine Konstante aus einer anderen Klasse in Ihrem Code verwenden und der statische Import nicht mehrdeutig ist.
Übrigens, in Ihrem Beispiel "statische org.example.Myclass importieren;" funktioniert nicht: import ist für die Klasse, import static ist für statische Mitglieder einer Klasse.
Die Grundidee des statischen Imports besteht darin, dass Sie eine statische Klasse, eine statische Variable oder eine Aufzählung immer dann importieren können, wenn Sie eine statische Klasse, eine statische Variable oder eine Aufzählung verwenden.
Ich werde meinen Standpunkt anhand eines Beispiels erläutern.
import java.lang.Math;
class WithoutStaticImports {
public static void main(String [] args) {
System.out.println("round " + Math.round(1032.897));
System.out.println("min " + Math.min(60,102));
}
}
Gleicher Code mit statischen Importen:
import static java.lang.System.out;
import static java.lang.Math.*;
class WithStaticImports {
public static void main(String [] args) {
out.println("round " + round(1032.897));
out.println("min " + min(60,102));
}
}
Hinweis : Der statische Import kann das Lesen Ihres Codes verwirren.
import static java.lang.Math
ohne das Sternchen zu schreiben ?
der Unterschied zwischen "statische com.showboy.Myclass importieren" und "com.showboy.Myclass importieren"?
Der erste sollte einen Compilerfehler generieren, da der statische Import nur zum Importieren von Feldern oder Elementtypen funktioniert. (vorausgesetzt, MyClass ist keine innere Klasse oder ein Mitglied von Showboy)
Ich denke du meintest
import static com.showboy.MyClass.*;
Dadurch werden alle statischen Felder und Mitglieder von MyClass in der eigentlichen Kompilierungseinheit verfügbar, ohne dass sie qualifiziert werden müssen ... wie oben erläutert
Das import
erlaubt es den Java - Programmierer Zugriff Klassen eines Pakets ohne Paket Qualifikation.
Die static import
Funktion ermöglicht den Zugriff auf die statischen Mitglieder einer Klasse ohne die Klassenqualifikation.
Das import
bietet Zugriff auf Klassen und Schnittstellen, während es static import
Zugriff auf statische Mitglieder der Klasse bietet.
Beispiel:
Mit Import
import java.lang.System.*;
class StaticImportExample{
public static void main(String args[]){
System.out.println("Hello");
System.out.println("Java");
}
}
Mit statischem Import
import static java.lang.System.*;
class StaticImportExample{
public static void main(String args[]){
out.println("Hello");//Now no need of System.out
out.println("Java");
}
}
Siehe auch: Was ist statischer Import in Java 5?
Angenommen , Sie haben statische Felder und Methoden innerhalb einer Klasse genannt MyClass
in einem Paket mit dem Namen myPackage
und Sie wollen , dass sie durch die Eingabe direkt zugreifen myStaticField
oder myStaticMethod
ohne jedes Mal eingeben MyClass.myStaticField
oderMyClass.myStaticMethod
.
Hinweis: Sie müssen ein
import myPackage.MyClass
oder myPackage.*
ausführen, um auf die anderen Ressourcen zuzugreifen
Der static
Modifikator danach import
dient zum Abrufen / Verwenden statischer Felder einer Klasse. Ein Bereich, in dem ich import static
Konstanten aus einer Klasse abrufe. Wir können auch import static
statische Methoden anwenden . Stellen Sie sicher, dass Sie eingeben, import static
da dies static import
falsch ist.
Was ist static import
in Java - JavaRevisited - Eine sehr gute Ressource, um mehr darüber zu erfahrenimport static
.