2009-10-30 5 views
7

Я просто хочу, чтобы выходной ток, и я написалВ чем разница между импортом java.util. *; и импортировать java.util.Date; ?

import java.util.*; 

в начале и

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

в основной части.

Но то, что я получил что-то вроде этого:

[email protected] 

Когда я изменяю импорт в import java.util.Date; код прекрасно работает, почему?

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

Проблема заключалась в том, хорошо, моим исходным файлом была «Date.java», вот в чем причина.

Ну, это все моя вина, я смущен всех вокруг; P

И спасибо всем ниже. Это действительно СЛАВНОЕ ИЗ ВАС;)

+1

У вас может быть другой импорт - посмотрим компилятор, который показывает это – Mark

+1

См. Также: 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-large-import-java-awt-or-a-bunch-or-single-imp, http://stackoverflow.com/questions/1553909/is-there-any-difference-between-class- import-and-package-import-in-java – finnw

+1

Голосование, потому что иногда хороший встречный пример так же полезен, как и все. :) – mtruesdell

ответ

11

Возможно, у вас есть какой-то другой «Date» класс (или у вас есть класс Date в вашем пакете, который не нужно импортировать). С «import java.util. *» Вы используете «другую» дату. В этом случае лучше всего явно указать java.util.Date в коде.

Или лучше, постарайтесь не называть классы «Дата».

+0

вы были правы, я назвал свой src «Date.java» – EthanZ6174

+0

@ EthanZ6174: Хорошо для вас! Никогда больше не делайте этого снова ... –

+2

@ EthanZ6174: Смотрите Puzzle 7 в этом примере с Java Puzzlers - http://www.javapuzzlers.com/java-puzzlers-sampler.pdf. Эта книга является определенной рекомендую для любого Java-программиста! –

2

Ваша программа должна работать точно так же с import java.util. *; или import java.util.Date;. Должно быть что-то еще, что вы делали между ними.

+0

спасибо, что ответили на вопрос, и я знал, что между ними нет никакой разницы, если я не назвал src «Date.java» ... :( – EthanZ6174

3
import java.util.*; 

импортирует все в пределах java.util, включая класс Date.

import java.util.Date; 

только импортирует класс даты.

Выполнение любого из этих способов не имеет значения.

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? 

Что вы подразумеваете под «работает отлично»? Результатом печати объекта Date является то же самое независимо от того, был ли вы импортирован java.util. * Или java.util.Date. Вывод, который вы получаете при печати объектов, представляет собой представление объекта методом toString() соответствующего класса.

+0

nope, я называю класс «Date.java», и это проблема .. – EthanZ6174

4

Реализация toString()java.util.Date не зависит от способа импорта этого класса. Он всегда возвращает хорошую форматированную дату.

toString() Вы видите, что происходит из другого класса.

Удельный импорт имеет приоритет над импортными символами.

в этом случае

import other.Date 
import java.util.* 

new Date(); 

относится к other.Date и не java.util.Date.

Странным является то, что

import other.* 
import java.util.* 

должен дать вам ошибку компилятора о том, что ссылка на сегодняшний день является неоднозначной, поскольку оба other.Date и java.util.Date матчей.

Смежные вопросы