Cosa significa & # 8220; statico & # 8221; modificatore dopo & # 8220; import & # 8221; significare?
-
03-07-2019 - |
Domanda
Se usato in questo modo:
import static com.showboy.Myclass;
public class Anotherclass{}
qual è la differenza tra import static com.showboy.Myclass
e import com.showboy.Myclass
?
Soluzione
Vedi Documentazione
La dichiarazione di importazione statica è analogo all'importazione normale dichiarazione. Dove la normale importazione la dichiarazione importa le classi da pacchetti, permettendo loro di essere utilizzati senza qualificazione del pacchetto, il importazioni di dichiarazioni di importazione statiche membri statici delle classi, permettendo loro da usare senza classe qualificazione.
Quindi, quando dovresti usare l'importazione statica? Con molta parsimonia! Usalo solo quando lo faresti altrimenti essere tentato di dichiarare locale copie di costanti o da abuso eredità (l'interfaccia costante Antipattern). In altre parole, usalo quando hai bisogno di un accesso frequente a membri statici da uno o due classi. Se usi eccessivamente l'elettricità statica funzione di importazione, può fare il tuo programma illeggibile e non mantenibile, inquinando il suo spazio dei nomi con tutto il membri statici che importi. Lettori di il tuo codice (incluso te, alcuni mesi dopo averlo scritto) non lo saprà da quale classe appartiene un membro statico a partire dal. Importazione di tutto lo statico possono essere membri di una classe particolarmente dannoso per la leggibilità; se hai bisogno solo di uno o due membri, importali singolarmente. Usato appropriatamente, l'importazione statica può fare il tuo programma più leggibile, di rimuovendo la piastra di caldaia della ripetizione dei nomi delle classi.
Altri suggerimenti
Non c'è 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;
}
Puoi scrivere:
package test;
import static org.example.Foo.B_INSTANCE;
class A {
B b = B_INSTANCE;
}
È utile se nel codice viene utilizzata spesso una costante di un'altra classe e se l'importazione statica non è ambigua.
A proposito, nel tuo esempio " import static org.example.Myclass; " non funzionerà: import è per classe, import statico è per 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.
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 intendevi
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
import
consente al programmatore java di accedere alle classi di un pacchetto senza qualificazione del pacchetto.
La funzione static static
consente di accedere ai membri statici di una classe senza la qualifica di classe.
import
fornisce accessibilità alle classi e all'interfaccia mentre static static
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: Che cos'è l'importazione statica in Java 5
Supponi di avere campi e metodi statici all'interno di una classe chiamata MyClass
all'interno di un pacchetto chiamato myPackage
e che desideri accedervi direttamente digitando myStaticField
o myStaticMethod
senza digitare ogni volta MyClass.myStaticField
o MyClass.myStaticMethod
.
Nota: devi fare un
importa myPackage.MyClass
o myPackage. *
per accedere alle altre risorse
Il modificatore statico
dopo import
serve per recuperare / utilizzare i campi statici di una classe. Un'area in cui utilizzo import static
è per recuperare costanti da una classe.
Possiamo anche applicare import static
su metodi statici. Assicurati di digitare import static
perché static import
è errato.
Che cos'è importazione statica
in Java - JavaRevisited - Un'ottima risorsa per saperne di più su import static
.