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 ?

¿Fue útil?

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 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top