Почему было большинство java.util. Методы даты удержаны от использования?

Когда Вы смотрите на javadoc java.util. Класс даты, большинство методов удерживается от использования. Почему это было сделано?

45
задан Daniel Kaplan 25 May 2010 в 00:29
поделиться

3 ответа

Ну, по двум связанным причинам. Это была очень плохая реализация концепции дат и времени, и она была заменена классом Calendar .

Класс Calendar , хотя и является улучшением, также оставляет желать лучшего, поэтому для серьезной работы с датой / временем все рекомендуют Joda-Time . Java 8 представляет новый пакет java.time. * , вдохновленный Joda-Time, определенный в JSR-310 и предназначенный для замены старого пакета Date / Календарные занятия.

Изменить: В ответ на конкретный вопрос, почему реализация плохая, есть много причин.JavaDoc резюмирует это следующим образом:

К сожалению, API для этих функций не поддавался интернационализации.

В дополнение к этому общему недостатку (который покрывает такие проблемы, как отсутствие компонента часового пояса, а также форматирование даты, которое лучше обрабатывается в DateFormat , и невозможность представления не григорианского календаря ), есть определенные проблемы, которые действительно повредили классу Date , включая тот факт, что год представлен смещением 1900 года от года нашей эры.

Календарь имеет свои проблемы, но уже в JDK 1.1 было очевидно, что java.util.Date не собирается его сокращать. Несмотря на то, что Calendar , возможно, является худшим API JDK, потребовалось до версии 7, чтобы попытаться решить эту проблему.

44
ответ дан 26 November 2019 в 21:20
поделиться
  • Дата является изменяемой
  • Дата не поддерживает часовые пояса

Последнее привело к ее замене на Календарь . И первое, в сочетании с простотой использования, привело к тому, что оба были заменены на Joda-Time / JSR-310 ( java.time. * Package )

16
ответ дан 26 November 2019 в 21:20
поделиться

Они устарели, потому что Date был написан настолько быстро, насколько это было возможно, еще в тот день, когда JDK хотели выкинуть с рынка.

Оказывается, даты и календари трудны. Итак, они создали класс Calendar, который гораздо более продуман, чтобы справиться с трудными частями работы с календарями.

Они исключили методы Date и делегировали их Calendar, поскольку не хотели изменять поведение существующих методов Date и, возможно, нарушать работу существующих приложений.

10
ответ дан 26 November 2019 в 21:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: