2009-10-30 30 views
7

sólo quiero corriente de salida y escribí¿Cuál es la diferencia entre import java.util. *; e importar java.util.Date; ?

import java.util.*; 

al principio, y

System.out.println(new Date()); 

en la parte principal.

Pero lo que me dieron fue algo como esto:

[email protected] 

Cuando cambio a la importación import java.util.Date; el código funciona perfectamente, ¿por qué?

====================================

El problema era, OK, mi archivo fuente era "Date.java", esa es la causa.

Bueno, es mi culpa, me confunde todos alrededor; P

Y gracias a todo el mundo a continuación. Es realmente BUENO DE TI;)

+1

Puede tener otras importaciones; veamos un código compilable que muestra este – Mark

+1

Vea también: http://stackoverflow.com/questions/147454/why-is-using-a-wild-card-with-a- java-import-statement-bad, http://stackoverflow.com/questions/187453/import-package-vs-import-package-specifictype, http://stackoverflow.com/questions/585268/which-would-make- a-class-file-bigger-import-java-awt-or-a-bunch-or-single-imp, http://stackoverflow.com/questions/1553909/is-there-any-difference-between-class- imports-and-package-imports-in-java – finnw

+1

Votando porque a veces un buen contraejemplo es tan útil como cualquier otra cosa. :) – mtruesdell

Respuesta

11

Es probable que tenga alguna otra clase de "fecha" importada en alguna parte (o si tiene una clase Fecha en que el paquete, que no necesita ser importado). Con "import java.util. *" Está utilizando la "otra" Fecha. En este caso, es mejor especificar explícitamente java.util.Date en el código.

O mejor, tratar de evitar nombrar a sus clases "Fecha".

+0

tenías razón, nombré a mi src "Date.java" – EthanZ6174

+0

@ EthanZ6174: ¡Bien por usted! Nunca vuelva a hacer eso ... –

+2

@ EthanZ6174: vea el Puzzle 7 en esta lista de ejemplos de Java Puzzlers - http://www.javapuzzlers.com/java-puzzlers-sampler.pdf. Ese libro es definitivo ¡lo recomiendo para cualquier programador de Java! –

2

Su programa debería funcionar exactamente igual con import java.util. *; java.util.Date o importación;. Tiene que haber algo más que hayas hecho en el medio.

+0

gracias por responder a la pregunta, y sabía que no había ninguna diferencia entre ellos, a menos que nombrara el src "Date.java" ... :( – EthanZ6174

3
import java.util.*; 

importa todo dentro de java.util incluyendo la clase Date.

import java.util.Date; 

acaba de importar la clase Date.

Cualquiera de estas acciones no podría hacer ninguna diferencia.

0
but what I got is something like this: [email protected] 
while I change the import to: import java.util.Date; 
the code works perfectly, why? 

¿Qué quiere decir con "works perfectly"? El resultado de imprimir un objeto Date es el mismo sin importar si importó java.util. * O java.util.Date. El resultado que obtienes al imprimir objetos es la representación del objeto por el método toString() de la clase correspondiente.

+0

no, yo nombro la clase "Date.java" y ese es el problema ... – EthanZ6174

4

La implementación toString() de java.util.Date no depende de la forma en que se importe la clase. Siempre devuelve una buena fecha formateada.

El toString() ves viene de otra clase.

de importación específicos tienen prioridad sobre las importaciones comodín.

en este caso

import other.Date 
import java.util.* 

new Date(); 

refiere a other.Date y no java.util.Date.

Lo curioso es que

import other.* 
import java.util.* 

usted debe dar un error de compilación que indica que la referencia a la fecha es ambigua porque ambos other.Date y java.util.Date partidos.

Cuestiones relacionadas