it-swarm.com.de

Was bedeutet der Modifikator "static" nach "import"?

Bei Verwendung wie folgt:

import static com.showboy.Myclass;

public class Anotherclass{}

was ist der Unterschied zwischen import static com.showboy.Myclass und import com.showboy.Myclass?

425
JSON

Siehe Dokumentation

Die statische Einfuhranmeldung ist analog zur normalen Einfuhranmeldung. Wenn die normale Importdeklaration Klassen aus Paketen importiert, die ohne Paketqualifikation verwendet werden können, importiert die statische Importdeklaration statische Member aus Klassen, die ohne Klassenqualifikation 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 Constant Interface Antipattern). Verwenden Sie sie mit anderen Worten, wenn Sie häufigen Zugriff auf statische Member aus einer oder zwei Klassen benötigen. Wenn Sie die statische Importfunktion übermäßig verwenden, kann dies dazu führen, dass Ihr Programm nicht mehr lesbar und nicht mehr wartbar ist und den Namespace mit allen statischen Elementen verschmutzt, die Sie importieren. Leser Ihres Codes (einschließlich Sie, einige Monate nachdem Sie ihn geschrieben haben) wissen nicht, aus welcher Klasse ein statischer Member stammt. Das Importieren aller statischen Elemente aus einer Klasse kann sich besonders nachteilig auf die Lesbarkeit auswirken. Wenn Sie nur ein oder zwei Mitglieder benötigen, importieren Sie diese einzeln. Bei richtiger Verwendung kann der statische Import Ihr Programm lesbarer machen, indem das Kesselzeichen für die Wiederholung von Klassennamen entfernt wird.

378
xsl

Es gibt keinen Unterschied zwischen den beiden von Ihnen angegebenen Importen. Sie können jedoch den statischen Import verwenden, um den unqualifizierten Zugriff auf statische Member anderer Klassen zuzulassen. 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 .

219
Victor

Statischer 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 "import static org.example.Myclass;" funktioniert nicht: import ist für Klassen, import static ist für statische Mitglieder einer Klasse.

57
Nicolas

Die Grundidee des statischen Imports besteht darin, dass Sie, wenn Sie eine statische Klasse, eine statische Variable oder eine Aufzählung verwenden, diese importieren und sich die Eingabe ersparen können.

Ich werde meinen Punkt 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));
  }
}

Anmerkung: Durch statischen Import kann der Code beim Lesen verwirrend werden.

35
Rahul Saxena

ist der Unterschied zwischen "import static com.showboy.Myclass" und "import com.showboy.Myclass"?

Die erste sollte einen Compilerfehler erzeugen, da der statische Import nur zum Importieren von Feldern oder Elementtypen funktioniert. (unter der Annahme, dass MyClass keine innere Klasse oder kein Mitglied des Showboys ist)

Ich denke du meintest

import static com.showboy.MyClass.*;

dadurch werden alle statischen Felder und Member von MyClass in der eigentlichen Zusammenstellungseinheit verfügbar, ohne dass diese qualifiziert werden müssen ... wie oben erläutert

23

Mit dem import kann der Programmierer Java) auf Klassen eines Pakets ohne Paketqualifikation zugreifen.

Das static import ermöglicht den Zugriff auf die statischen Mitglieder einer Klasse ohne die Klassenqualifikation.

Das import ermöglicht den Zugriff auf Klassen und Schnittstellen, während static import ermöglicht den Zugriff auf statische Mitglieder der Klasse.

Beispiel:

Mit importieren

import Java.lang.System.*;    
class StaticImportExample{  
    public static void main(String args[]){  

       System.out.println("Hello");
       System.out.println("Java");  

  }   
} 

Mit statischer 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

14
roottraveller

Angenommen, Sie haben statische Felder und Methoden in einer Klasse namens MyClass in einem Paket namens myPackage und möchten direkt darauf zugreifen, indem Sie myStaticField oder myStaticMethod ohne eingeben Tippen jedes Mal MyClass.myStaticField oder MyClass.myStaticMethod.

Hinweis: Sie müssen ein import myPackage.MyClass oder myPackage.* für den Zugriff auf die anderen Ressourcen

2
Java Main

Der Modifikator static nach import dient zum Abrufen/Verwenden statischer Felder einer Klasse. Ein Bereich, in dem ich import static Verwende, ist das Abrufen von Konstanten aus einer Klasse. Wir können import static Auch auf statische Methoden anwenden. Stellen Sie sicher, dass Sie import static Eingeben, da static import Falsch ist.

Was ist static import In Java - JavaRevisited - Ein sehr gutes Hilfsmittel, um mehr über import static zu erfahren.

1
RajeeV VenkaT