Odpowiedzi:
Zobacz dokumentację
Statyczna deklaracja importowa jest analogiczna do zwykłej deklaracji importowej. W przypadku gdy normalna deklaracja importowa importuje klasy z paczek, umożliwiając ich stosowanie bez kwalifikacji paczki, statyczna deklaracja importowa importuje statyczne elementy z klas, umożliwiając ich stosowanie bez kwalifikacji klasy.
Kiedy więc należy użyć importu statycznego? Bardzo oszczędnie! Używaj go tylko wtedy, gdy masz ochotę zadeklarować lokalne kopie stałych lub nadużyć dziedziczenia (Antipattern interfejsu stałego). Innymi słowy, używaj go, gdy potrzebujesz częstego dostępu do elementów statycznych z jednej lub dwóch klas. Jeśli nadużyjesz funkcji importowania statycznego, może to spowodować, że Twój program będzie nieczytelny i niemożliwy do utrzymania, zanieczyszczając jego przestrzeń nazw wszystkimi importowanymi elementami statycznymi. Czytelnicy twojego kodu (w tym ciebie, kilka miesięcy po napisaniu go) nie będą wiedzieć, z której klasy pochodzi element statyczny. Importowanie wszystkich elementów statycznych z klasy może być szczególnie szkodliwe dla czytelności; jeśli potrzebujesz tylko jednego lub dwóch członków, zaimportuj ich indywidualnie. Odpowiednio użyte importowanie statyczne może uczynić twój program bardziej czytelnym,
Nie ma różnicy między tymi dwoma importami, które podajesz. Możesz jednak użyć importu statycznego, aby zezwolić na nieograniczony dostęp do statycznych elementów innych klas. Gdzie kiedyś musiałem to robić:
import org.apache.commons.lang.StringUtils;
.
.
.
if (StringUtils.isBlank(aString)) {
.
.
.
Mogę to zrobić:
import static org.apache.commons.lang.StringUtils.isBlank;
.
.
.
if (isBlank(aString)) {
.
.
.
Możesz zobaczyć więcej w dokumentacji .
Import statyczny służy do importowania pól statycznych / metody klasy zamiast:
package test;
import org.example.Foo;
class A {
B b = Foo.B_INSTANCE;
}
Możesz pisać :
package test;
import static org.example.Foo.B_INSTANCE;
class A {
B b = B_INSTANCE;
}
Jest to przydatne, jeśli często używasz stałej z innej klasy w kodzie i jeśli import statyczny nie jest niejednoznaczny.
Btw, w twoim przykładzie „import static org.example.Myclass;” nie działa: import jest dla klasy, import statyczny jest dla statycznych członków klasy.
Podstawową ideą importu statycznego jest to, że za każdym razem, gdy używasz klasy statycznej, zmiennej statycznej lub wyliczenia, możesz je zaimportować i uchronić się przed wpisaniem.
Omówię tę kwestię przykładem.
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));
}
}
Ten sam kod ze statycznym importem:
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));
}
}
Uwaga : import statyczny może powodować, że kod może być mylący z czytaniem.
import static java.lang.Math
bez gwiazdki oznaczałoby cokolwiek ?
różnica między „import static com.showboy.Myclass” i „import com.showboy.Myclass”?
Pierwszy powinien wygenerować błąd kompilatora, ponieważ import statyczny działa tylko w przypadku importowania pól lub typów elementów. (zakładając, że MyClass nie jest wewnętrzną klasą ani członkiem showboya)
Myślę, że miałeś na myśli
import static com.showboy.MyClass.*;
która udostępnia wszystkie pola statyczne i elementy z MyClass w rzeczywistej jednostce kompilacji bez konieczności ich kwalifikowania ... jak wyjaśniono powyżej
import
Pozwala programiście Java klas dostępowych z pakietem bez pakietu kwalifikacji.
Ta static import
funkcja umożliwia dostęp do statycznych elementów klasy bez kwalifikacji klasy.
import
Zapewnia dostęp do klas i interfejs natomiast static import
zapewnia dostęp do statycznych członków klasy.
Przykład:
Z importem
import java.lang.System.*;
class StaticImportExample{
public static void main(String args[]){
System.out.println("Hello");
System.out.println("Java");
}
}
Ze statycznym importem
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");
}
}
Zobacz także: Co to jest import statyczny w Javie 5
Załóżmy, że masz pola statyczne i metody wewnątrz klasy o nazwie MyClass
wewnątrz pakietu o nazwie myPackage
i chcesz uzyskać do nich bezpośredni dostęp, wpisując myStaticField
lub myStaticMethod
bez wpisywania za każdym razem MyClass.myStaticField
lubMyClass.myStaticMethod
.
Uwaga: musisz zrobić
import myPackage.MyClass
lub, myPackage.*
aby uzyskać dostęp do innych zasobów
The static
Modyfikator po import
to do pobierania / używanie statycznych pól klasy. Jednym z obszarów, w których używam, import static
jest pobieranie stałych z klasy. Możemy również stosować import static
metody statyczne. Upewnij się, że wpisałeś, import static
ponieważ static import
jest niepoprawny.
Co jest static import
w Javie - JavaRevisited - Bardzo dobry zasób, aby dowiedzieć się więcej import static
.