Risposte:
Vedi documentazione
La dichiarazione di importazione statica è analoga alla normale dichiarazione di importazione. Laddove la normale dichiarazione di importazione importa le classi dai pacchetti, consentendo loro di essere utilizzate senza qualificazione del pacchetto, la dichiarazione di importazione statica importa i membri statici dalle classi, consentendo loro di essere utilizzate senza qualifica di classe.
Quindi, quando dovresti usare l'importazione statica? Con molta parsimonia! Utilizzalo solo quando altrimenti verrai tentato di dichiarare copie locali di costanti o di abusare dell'eredità (Antipattern di Constant Interface). In altre parole, usalo quando hai bisogno di un accesso frequente ai membri statici da una o due classi. Se usi eccessivamente la funzionalità di importazione statica, può rendere il tuo programma illeggibile e non realizzabile, inquinando il suo spazio dei nomi con tutti i membri statici che importi. I lettori del tuo codice (incluso te, pochi mesi dopo averlo scritto) non sapranno da quale classe provenga un membro statico. L'importazione di tutti i membri statici da una classe può essere particolarmente dannosa per la leggibilità; se hai bisogno solo di uno o due membri, importali singolarmente. Se usato in modo appropriato, l'importazione statica può rendere il tuo programma più leggibile,
Non vi è alcuna differenza tra queste due importazioni dichiarate. Tuttavia, è possibile utilizzare l'importazione statica per consentire l'accesso non qualificato ai membri statici di altre classi. Dove ero solito fare questo:
import org.apache.commons.lang.StringUtils;
.
.
.
if (StringUtils.isBlank(aString)) {
.
.
.
Posso farlo:
import static org.apache.commons.lang.StringUtils.isBlank;
.
.
.
if (isBlank(aString)) {
.
.
.
Puoi vedere di più nella documentazione .
L'importazione statica viene utilizzata per importare campi / metodi statici di una classe anziché:
package test;
import org.example.Foo;
class A {
B b = Foo.B_INSTANCE;
}
Tu puoi scrivere :
package test;
import static org.example.Foo.B_INSTANCE;
class A {
B b = B_INSTANCE;
}
È utile se nel codice viene spesso utilizzata una costante di un'altra classe e se l'importazione statica non è ambigua.
A proposito, nel tuo esempio "import static org.example.Myclass;" non funziona: l'importazione è per la classe, l'importazione statica è per i membri statici di una classe.
L'idea di base dell'importazione statica è che ogni volta che si utilizza una classe statica, una variabile statica o un enum, è possibile importarli e salvarsi da qualche digitazione.
Elaborerò il mio punto con l'esempio.
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));
}
}
Stesso codice, con importazioni statiche:
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));
}
}
Nota : l'importazione statica può creare confusione nella lettura del codice.
import static java.lang.Math
senza l'asterisco?
la differenza tra "import static com.showboy.Myclass" e "import com.showboy.Myclass"?
Il primo dovrebbe generare un errore del compilatore poiché l'importazione statica funziona solo per l'importazione di campi o tipi di membri. (supponendo che MyClass non sia una classe interna o un membro di showboy)
Penso che volevi dire
import static com.showboy.MyClass.*;
che rende disponibili tutti i campi e i membri statici di MyClass nell'unità di compilazione effettiva senza doverli qualificare ... come spiegato sopra
Il import
permette al programmatore Java per classi di accesso di un pacchetto senza qualifica pacchetto.
La static import
funzione consente di accedere ai membri statici di una classe senza la qualifica di classe.
Il import
fornisce accessibilità alle classi e un'interfaccia che static import
fornisce accessibilità ai membri statici della classe.
Esempio :
Con importazione
import java.lang.System.*;
class StaticImportExample{
public static void main(String args[]){
System.out.println("Hello");
System.out.println("Java");
}
}
Con importazione statica
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");
}
}
Vedi anche: Cos'è l'importazione statica in Java 5
Supponiamo di avere campi e metodi statici all'interno di una classe chiamata MyClass
all'interno di un pacchetto chiamato myPackage
e che si desidera accedervi direttamente digitando myStaticField
o myStaticMethod
senza digitare ogni volta MyClass.myStaticField
o MyClass.myStaticMethod
.
Nota: è necessario eseguire una
import myPackage.MyClass
o myPackage.*
per accedere alle altre risorse
Il static
modificatore successivo import
è per il recupero / l'utilizzo di campi statici di una classe. Un'area in cui utilizzo import static
è per recuperare costanti da una classe. Possiamo anche applicare import static
metodi statici. Assicurati di digitare import static
perché static import
è sbagliato.
Cosa c'è static import
in Java - JavaRevisited - Un'ottima risorsa per saperne di piùimport static
.