2010-02-13 15 views
6

Duplicar posible:
Import package.* vs import package.SpecificType¿Cómo importar la clase Java?

¿Puedo hacer:

import java.awt.* 

en lugar de:

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.Toolkit; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

si ambas formas son corr ¿cuál es mejor?

+1

duplicado exacto: http://stackoverflow.com/questions/187453/import-package -vs-import-package-specifictype –

+1

@Mark - No lo creo, pero gracias por sus observaciones, me pregunto si está dispuesto/puede agregar algo a las respuestas a continuación. –

+0

Ya lo hice ... –

Respuesta

14

Puede importar el paquete general, pero es mejor ser más explícito e importar las clases específicas que necesita. Ayuda a prevenir problemas de colisión en el espacio de nombres y es mucho más agradable.

Además, si usa Eclipse y el acceso directo CTRL + MAYÚS + O generará automáticamente las importaciones explícitas, lo que le solicitará las importaciones ambiguas.

+1

+1 Nomino esta respuesta para su aceptación. –

+1

@Jon - gracias por su entrada, ¿qué colisión de espacio de nombres puede causar? el compilador devolverá el error? –

+1

p. Ej. Si usa Fecha fecha = nueva Fecha(); e importar java.util. * e importar java.sql. * terminará con un error de sintaxis para "El tipo Fecha es ambiguo". – Jon

4

Uno que es más explícito.

EDITAR: La ventaja del segundo método es la legibilidad, no hay conflicto de espacios de nombres, etc. Pero si tiene cientos de clases para importar desde un paquete, es mejor que vaya con el primer enfoque.

+4

¿Por qué? ¿Cuál es la ventaja? – Dustman

7

Se importará sólo las clases en java.awt, así que hay que importar demasiado java.awt.event:

import java.awt.* 
import java.awt.event.*; 

Segundo método probablemente se carga menos clases, pero no le ahorrará mucho de memoria.

+2

++. El compilador es bueno sobre la importación de clases que realmente se utilizan, por lo que la única ventaja de importar clases particulares es reducir la probabilidad de una colisión de nombres no calificada. – Dustman

+2

Un ejemplo específico es si importa java.awt. * Y java.util. * Y luego intenta usar List. En este caso, debe importar una clase específica. –

6

Ambos son buenos. El superior es menos detallado, pero el segundo le permitirá ser específico sobre las clases que importa, lo que le permite evitar colisiones. Como la mayoría de los IDEs le permitirán ocultar declaraciones de importación, la verbosidad de la segunda no es realmente un problema.

Considere

import java.util.*; 
import java.awt.*; 

cuando intenta declarar una List, tendrá una colisión entre java.awt.List y java.util.List

Cuestiones relacionadas