java - Cosa significa il modificatore "statico" dopo "import"?




modifier static-import (6)

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. (presumendo che MyClass non sia una classe interiore o un membro dello showboy)

Penso che tu intendessi

import static com.showboy.MyClass.*;

che rende tutti i campi statici e membri di MyClass disponibili nell'unità di compilazione effettiva senza doverli qualificare ... come spiegato sopra

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 ?


Il modificatore static dopo l' import serve per recuperare / utilizzare i campi statici di una classe. Un'area in cui utilizzo l' import static è per il recupero di costanti da una classe. Possiamo anche applicare import static su metodi statici. Assicurati di digitare l' import static perché l' static import è errata.

Che cosa è l' static import in Java - JavaRevisited - Una risorsa molto buona per sapere di più import static .


L'idea di base dell'importazione statica è che ogni volta che si utilizza una classe statica, una variabile statica o un'enumerazione, è possibile importarli e salvarsi da una 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ò rendere confuso il codice da leggere.


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 si utilizza spesso una costante di un'altra classe nel codice e se l'importazione statica non è ambigua.

Btw, nell'esempio "import static org.example.Myclass;" non funzionerà: l'importazione è per la classe, l'importazione statica è per i membri statici di una classe.


Supponiamo che tu abbia campi e metodi statici all'interno di una classe chiamata MyClass all'interno di un pacchetto chiamato myPackage e desideri accedervi direttamente digitando myStaticField o myStaticMethod senza digitare ogni volta MyClass.myStaticField o MyClass.myStaticMethod .

Nota: è necessario eseguire un import myPackage.MyClass o myPackage.* Per accedere alle altre risorse


Vedi Documentation

La dichiarazione di importazione statica è analoga alla normale dichiarazione di importazione. Quando la normale dichiarazione di importazione importa le classi dai pacchetti, consentendo loro di essere utilizzati senza qualifica del pacchetto, la dichiarazione di importazione statica importa i membri statici dalle classi, consentendo loro di essere utilizzati senza qualifica di classe.

Quindi quando dovresti usare l'importazione statica? Molto parsimonioso! Utilizzalo solo quando altrimenti saresti tentato di dichiarare copie locali di costanti o di abusare dell'ereditarietà (Constant Interface Antipattern). In altre parole, utilizzalo quando richiedi un accesso frequente ai membri statici da una o due classi. Se si abusa la funzionalità di importazione statica, può rendere il programma illeggibile e non gestibile, inquinando il suo spazio dei nomi con tutti i membri statici importati. I lettori del tuo codice (incluso te, pochi mesi dopo averlo scritto) non sapranno da quale classe proviene un membro statico. L'importazione di tutti i membri statici di una classe può essere particolarmente dannosa per la leggibilità; se è necessario solo uno o due membri, importarli singolarmente. Utilizzato in modo appropriato, l'importazione statica può rendere più leggibile il programma rimuovendo il testo di ripetizione dei nomi delle classi.







static-import