2011-03-15 17 views
5

Por ejemplo, la biblioteca de terceros utiliza una estructura de directorios muy compleja para el paquete. ¿Puedo importarlos de una vez? la estrella parece que solo puede importar un nivel de directorio.Para Java, ¿puedo importar todos los paquetes a la vez?

+4

¿Por qué no utiliza un IDE como Eclipse que puede importar automáticamente todo lo que necesita? – Wolph

+0

Minimice las importaciones, idealmente solo para las clases específicas que necesita. Como notas de @WoLpH, cualquier IDE decente hará esto por usted. Las importaciones excesivas son ruidosas y el origen de los problemas de sombreado del espacio de nombres confusos. – andersoj

+0

Solo para superar el límite mínimo de caracteres: no. – biziclop

Respuesta

14

Suponiendo que estás preguntando si es o no se puede hacer algo como:

import com.example.*; 
// expecting packages like com.example.foo.* and com.example.bar.* to be imported 

entonces la respuesta es no . La importación más amplia que puede hacer es un solo paquete con una estrella.

El JLS (sección 7.5) defines la estructura para los estados de importación.

Además, sería problemático para el compilador importar un montón de paquetes a la vez. Si dos paquetes proporcionan el mismo tipo, ambos se importan y el tipo se utiliza en la clase, se produce un error en tiempo de compilación. Esto se describe en JLS 6.5.5.1:

De lo contrario, si un tipo de ese nombre se declaró por más de un declaración de tipo-import-on-demand de la unidad de compilación, a continuación, el nombre es ambigua como una escribe un nombre; Se produce un error de tiempo de compilación .

+0

+1, respuesta agradable y clara. –

+0

@Rob, Sin embargo, muchas clases en subpaquetes se nombran a propósito de modo que no tengan nombres de clase conflictivos. Sería genial si permitieran el uso de asteriscos dobles en futuras versiones de Java, p. 'a.b.c. **' para importar todo dentro de 'a.b.c'. – Pacerier

3

Como usted ha señalado en Java sólo se puede usar la importación "un nivel" utilizado por "*"

La manera más eficaz es abrir Eclipse, clase abierta donde las importaciones deberían ser y pulse CTRL + SHIFT + O :) - hoy en día todos los IDE ayudan a organizar las importaciones

3

Sugiero encarecidamente, como han hecho otros, que use "organizar importaciones" desde su IDE (la mayoría de los principales IDE de Java lo harán).

Además, desaconsejo usar "*" en sus importaciones, y la razón de esto es simple. En algún momento, es posible que desee actualizar una de la biblioteca que importa (o el jdk) y puede terminar con conflictos de nombres debido a algunas clases nuevas en un paquete (esto es especialmente cierto para las importaciones estáticas). Puede que no sea gran cosa si eso le sucede a una clase dentro de su proyecto actual, pero si convierte ese código en una biblioteca en algún momento, podría ser más problemático ya que tendrá que recompilar esa clase después de ajustar las importaciones en conflicto.

(Sí, eso me sucedió no hace mucho tiempo ... Era un dolor ya que tuve que buscar abajo el código fuente de la biblioteca para la reconstrucción.)

ahorrar un poco de problemas en el camino. : D

0

como en el caso de las páginas JSP, puedo utilizar un archivo .inc para importar todas las clases requeridas de las bibliotecas 3 ª parte en una clase Java

0

Puede importar sólo un nivel de directorio.

En IntelliJ Ctrl + Alt + O atajo puede ser útil para:

  • organizar las importaciones existentes
  • eliminar las importaciones que no sean necesarios
  • add necesidades de importación

También puede ajustar el auto -importe ajustes en "Configuración → Editor → General → Importación automática"

0

Fo r Uso básico Sólo se puede utilizar:

import java.*; 
    import javax.*; 

* es para todos los

java.*; 

todas las clases en el paquete java.

Cuestiones relacionadas