2011-04-27 12 views
10

Estoy escribiendo una aplicación muy básica, extendiendo el Swing JFrame. ¿Cuáles son las diferencias entre hacer una referencia explícita:Java: ¿usar importación o un nombre explícito de paquete/clase?

public class LineTest extends javax.swing.JFrame { 
... 

o importar la clase de antemano:

import javax.swing.JFrame; 

public class LineTest extends JFrame { 
... 

Cuando (y por qué) usaría una técnica sobre la otra?

Respuesta

21

No hay diferencia real; el código de bytes generado será exactamente el mismo. Una declaración import es realmente solo una forma de decirle al compilador "cuando escribo JFrame, en realidad me refiero a javax.swing.JFrame".

Es posible que desee utilizar nombres de paquetes totalmente calificados si tiene, por ejemplo, dos clases con el mismo nombre en diferentes paquetes. Un ejemplo común de la biblioteca estándar son las clases java.util.Date y java.sql.Date.

3

Para el compilador no hace ninguna diferencia. La desventaja de usar el nombre completo calificado es que tendría que escribirlo cada vez que usa la clase. Solo uso el nombre completo si tengo dos clases con el mismo nombre en diferentes paquetes. De esta manera puede diferenciar entre esas dos clases

8

La única diferencia está en el código fuente. Usar el nombre completamente calificado conduce a un código menos legible, por lo que todo el mundo usa las importaciones casi exclusivamente. El único lugar donde he visto los nombres totalmente calificados utilizados consistentemente es en código generado.

La única razón para usar el nombre completo en el código normal es cuando tiene que usar dos clases con el mismo nombre simple (por ejemplo, java.util.List y java.awt.List); en ese caso, no hay alternativa.

Cuestiones relacionadas