¿Qué significa el modificador "estático" después de "importar"?
-
03-07-2019 - |
Pregunta
Cuando se usa de esta forma:
import static com.showboy.Myclass;
public class Anotherclass{}
¿cuál es la diferencia entre import static com.showboy.Myclass
y import com.showboy.Myclass
?
Solución
Consulte Documentation
La declaración de importación estática es análogo a la importación normal declaración. Donde la importación normal declaración importa clases de paquetes, permitiendo que sean utilizados sin paquete de calificación, el declaración de importación estática importaciones miembros estáticos de las clases, permitiendo Para ser usados ??sin clase. cualificación.
Entonces, ¿cuándo debería usar la importación estática? ¡Muy escasamente! Úsalo solo cuando te De lo contrario estaré tentado a declarar local. Copias de constantes, o de abusar. herencia (la interfaz constante Antipattern). En otras palabras, utilízalo. cuando requiera acceso frecuente a miembros estáticos de uno o dos clases Si usas demasiado la estática función de importación, puede hacer que su Programa ilegible e inigualable, contaminando su espacio de nombres con toda la miembros estáticos que importas. Lectores de tu código (incluyéndote a ti, unos meses despues de que lo escribiste) no sabras qué clase viene un miembro estático desde. Importando toda la estática los miembros de una clase pueden ser particularmente dañino para la legibilidad; Si solo necesitas uno o dos miembros, Importarlos individualmente. Usado apropiadamente, la importación estática puede hacer tu programa mas legible, por Retirando la placa de repetición. de nombres de clase.
Otros consejos
No hay diferencia entre esas dos importaciones que indicas. 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 tener que 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)) {
.
.
.
Puede ver más en documentación .
La importación estática se usa 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 se 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.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és usando una clase estática, una variable estática o una enumeración, puedes importarlos y evitarte algo de escritura.
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 tu código sea confuso para leer.
la diferencia entre " import static com.showboy.Myclass " y " import com.showboy.Myclass " ;?
El primero debe generar un error de compilador, ya que la importación estática solo funciona para importar campos o tipos de miembros. (asumiendo que MyClass no es una clase interna o miembro de showboy)
Creo que quisiste decir
import static com.showboy.MyClass.*;
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 acceder a las clases de un paquete sin la calificación del paquete.
La función importación estática
permite acceder a los miembros estáticos de una clase sin la calificación de la clase.
El importación
proporciona accesibilidad a las clases y la interfaz, mientras que importación estática
proporciona accesibilidad a los miembros estáticos de la clase.
Ejemplo:
Con import
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");
}
}
Vea 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 que MyClass.myStaticField
o MyClass.myStaticMethod
.
Nota: necesitas hacer una
importa myPackage.MyClass
o myPackage. *
para acceder a los otros recursos
El modificador static
después de import
es para recuperar / usar campos estáticos de una clase. Un área en la que uso importar estática
es para recuperar constantes de una clase.
También podemos aplicar import static
en métodos estáticos. Asegúrese de escribir importar estática
porque importación estática
es incorrecta.
¿Qué es importación estática
en Java - JavaRevisited ? Un recurso muy bueno para saber más sobre importar estática
.