Cosa significa & # 8220; statico & # 8221; modificatore dopo & # 8220; import & # 8221; significare?

StackOverflow https://stackoverflow.com/questions/162187

  •  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 ?

È stato utile?

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 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top