Respuestas:
Ver documentación
La declaración de importación estática es análoga a la declaración de importación normal. Cuando la declaración de importación normal importa clases de paquetes, lo que permite su uso sin calificación de paquete, la declaración de importación estática importa miembros estáticos de clases, lo que permite su uso sin calificación de clase.
Entonces, ¿cuándo deberías usar la importación estática? Muy escasamente! Úselo solo cuando de lo contrario estaría tentado a declarar copias locales de constantes o abusar de la herencia (el antipatrón de interfaz constante). En otras palabras, úselo cuando requiera acceso frecuente a miembros estáticos de una o dos clases. Si usa en exceso la función de importación estática, puede hacer que su programa sea ilegible e imposible de mantener, contaminando su espacio de nombres con todos los miembros estáticos que importe. Los lectores de su código (incluido usted, unos meses después de que lo escribió) no sabrán de qué clase proviene un miembro estático. Importar todos los miembros estáticos de una clase puede ser particularmente dañino para la legibilidad; Si solo necesita uno o dos miembros, impórtelos individualmente. Utilizado adecuadamente, la importación estática puede hacer que su programa sea más legible,
No hay diferencia entre esas dos importaciones que declaras. Sin embargo, puede usar la importación estática para permitir el acceso no calificado a miembros estáticos de otras clases. Donde solía hacer esto:
import org.apache.commons.lang.StringUtils;
.
.
.
if (StringUtils.isBlank(aString)) {
.
.
.
Puedo hacer esto:
import static org.apache.commons.lang.StringUtils.isBlank;
.
.
.
if (isBlank(aString)) {
.
.
.
Puedes ver más en la documentación .
La importación estática se utiliza para importar campos / métodos estáticos de una clase en lugar de:
package test;
import org.example.Foo;
class A {
B b = Foo.B_INSTANCE;
}
Puedes escribir :
package test;
import static org.example.Foo.B_INSTANCE;
class A {
B b = B_INSTANCE;
}
Es útil si a menudo usa una constante de otra clase en su código y si la importación estática no es ambigua.
Por cierto, en su ejemplo "import static org.example.Myclass;" no funcionará: la importación es para la clase, la importación estática es para los miembros estáticos de una clase.
La idea básica de la importación estática es que siempre que esté utilizando una clase estática, una variable estática o una enumeración, puede importarlos y ahorrarse algo de tipeo.
Elaboraré mi punto con el ejemplo.
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));
}
}
Mismo código, con importaciones estáticas:
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 : la importación estática puede hacer que su código sea confuso de leer.
import static java.lang.Math
sin el asterisco?
¿Cuál es la diferencia entre "import static com.showboy.Myclass" e "import com.showboy.Myclass"?
El primero debería generar un error de compilación ya que la importación estática solo funciona para importar campos o tipos de miembros. (suponiendo que MyClass no sea una clase interna o miembro de showboy)
Creo que quisiste decir
import static com.showboy.MyClass.*;
lo que hace que todos los campos estáticos y miembros de MyClass estén disponibles en la unidad de compilación real sin tener que calificarlos ... como se explicó anteriormente
El import
permite al programador de Java para las clases de acceso de un paquete sin cualificación paquete.
La static import
característica permite acceder a los miembros estáticos de una clase sin la calificación de clase.
El import
proporciona acceso a clases y la interfaz mientras que static import
proporciona acceso a miembros estáticos de la clase.
Ejemplo:
Con importación
import java.lang.System.*;
class StaticImportExample{
public static void main(String args[]){
System.out.println("Hello");
System.out.println("Java");
}
}
Con importación estática
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");
}
}
Consulte también: ¿Qué es la importación estática en Java 5?
Supongamos que tiene campos y métodos estáticos dentro de una clase llamada MyClass
dentro de un paquete llamado myPackage
y desea acceder a ellos directamente escribiendo myStaticField
o myStaticMethod
sin escribir cada vez MyClass.myStaticField
oMyClass.myStaticMethod
.
Nota: debe hacer un
import myPackage.MyClass
o myPackage.*
para acceder a los otros recursos
El static
modificador posterior import
es para recuperar / usar campos estáticos de una clase. Un área en la que uso import static
es para recuperar constantes de una clase. También podemos aplicar import static
sobre métodos estáticos. Asegúrese de escribir import static
porque static import
está mal.
Qué hay static import
en Java - JavaRevisited - Un muy buen recurso para saber másimport static
.