В чем разница между import java.util. *; и импортировать java.util.Date; ?

Я просто хочу вывести ток и написал

import java.util.*;

в начале и

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

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

Но у меня получилось что-то вроде этого:

Date@124bbbf

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

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

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

Ну это я во всем виноват, я всех запутал; P

И спасибо всем, кто внизу. Это действительно ПРИЯТНО для ВАС;)


person EthanZ6174    schedule 30.10.2009    source источник
comment
В первом примере вы, возможно, импортируете что-нибудь еще? Например. java.sql.Date?   -  person lindelof    schedule 30.10.2009
comment
У вас может быть другой импорт - давайте посмотрим какой-нибудь компилируемый код, который показывает это   -  person mmmmmm    schedule 30.10.2009
comment
Голосование, потому что иногда хороший контрпример полезен как ничто другое. :)   -  person mtruesdell    schedule 30.10.2009
comment
спасибо вам всем @Mark, я назвал класс Date, и это проблема @finnw thx для цитирования @mtruesdell, жаль, я еще не могу проголосовать .. очень новичок здесь я   -  person EthanZ6174    schedule 30.10.2009


Ответы (5)


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

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

person sleske    schedule 30.10.2009
comment
@ EthanZ6174: см. Головоломку 7 в этом списке примеров из Java Puzzlers - javapuzzlers.com/java- puzzlers-sampler.pdf. Эта книга - однозначная рекомендация для любого Java-программиста! - person Vijay Dev; 30.10.2009

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

toString(), который вы видите, принадлежит другому классу.

Конкретный импорт имеет приоритет над импортом с подстановочными знаками.

в таком случае

import other.Date
import java.util.*

new Date();

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

Странно то, что

import other.*
import java.util.*

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

person Fedearne    schedule 30.10.2009

import java.util.*;

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

import java.util.Date;

просто импортирует класс Date.

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

person Chris R    schedule 30.10.2009

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

person cherouvim    schedule 30.10.2009
comment
спасибо за ответ на вопрос, и я знал, что между ними нет разницы, если я не назвал src Date.java ... :( - person EthanZ6174; 30.10.2009

but what I got is something like this: Date@124bbbf  
while I change the import to: import java.util.Date;  
the code works perfectly, why? 

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

person Vijay Dev    schedule 30.10.2009