¿Qué significa el modificador “estático” después de “importar”?

Cuando se usa así:

import static com.showboy.Myclass; public class Anotherclass{} 

¿ import static com.showboy.Myclass es la diferencia entre import static com.showboy.Myclass e import com.showboy.Myclass ?

Ver la documentación

La statement de importación estática es análoga a la statement de importación normal. Cuando la statement de importación normal importa clases de paquetes, lo que permite que se utilicen sin la calificación del paquete, la statement de importación estática importa miembros estáticos de las clases, lo que les permite ser utilizados sin calificación de clase.

Entonces, ¿cuándo deberías usar la importación estática? Muy escasamente! Úselo únicamente cuando esté tentado de declarar copias locales de las constantes o abusar de la herencia (Constant Constant Antipattern). En otras palabras, úselo cuando necesite acceso frecuente a miembros estáticos de una o dos clases. Si utiliza en exceso la característica de importación estática, puede hacer que su progtwig sea ilegible y no se pueda mantener, contaminando su espacio de nombres con todos los miembros estáticos que importa. Los lectores de su código (incluido usted, algunos meses después de haberlo escrito) no sabrán de qué clase proviene un miembro estático. La importación de todos los miembros estáticos de una clase puede ser particularmente perjudicial para la legibilidad; si solo necesita uno o dos miembros, impórtelos individualmente. Si se usa apropiadamente, la importación estática puede hacer que su progtwig sea más legible, eliminando la repetición repetitiva de nombres de clase.

No hay diferencia entre esas dos importaciones que usted declara. 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)) { . . . 

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 el código y si la importación estática no es ambigua.

Por cierto, en tu 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 cada vez que utilice una clase estática, una variable estática o una enumeración, puede importarlas y salvarse de algún tipo de escritura.

Elaboraré mi punto con 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.

la diferencia entre “import static com.showboy.Myclass” e “import com.showboy.Myclass”?

El primero debe generar un error de comstackción, ya que la importación estática solo funciona para importar campos o tipos de miembros. (suponiendo que MyClass no es una clase interna o miembro de showboy)

Creo que querías 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 comstackción real sin tener que calificarlos … como se explicó anteriormente

La import permite al progtwigdor Java acceder a las clases de un paquete sin la calificación del paquete.

La función de static import permite acceder a los miembros estáticos de una clase sin la calificación de la clase.

La import proporciona accesibilidad a las clases y a la interfaz, mientras que static import proporciona accesibilidad a los 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"); } } 

Ver también: ¿Qué es la importación estática en Java 5?

Digamos 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 o myClass.myStaticMethod.

Nota: debe realizar una importación de myPackage.MyClass o myPackage. * Para acceder a los otros recursos

El modificador static después de la 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 en métodos estáticos. Asegúrese de escribir import static porque static import es incorrecta.

Qué es static import en Java – JavaRevisited – Un recurso muy bueno para saber más sobre la import static .