Методы Даты устаревшие в Java?

Что действительно предназначено при использовании утилит Java Date, и что-то было удержано от использования. Это означает, что этому препятствуют для использования, или это подразумевает, что запрещается?

Я предполагаю, что это - плохая практика для использования устаревших методов, но не уверено и не требуется для обнаружения.

Например, я пытаюсь использовать код, такой как следующее

String date = request.getParameter("date"); 
model.setDate(new Date(date));

Конечно... это - пример высокого уровня, но в этой ситуации, мое образцовое использование вводит Дату, и я должен вытянуть дату от запроса как Строка и создать дату с ним.

Это хорошо работает, как у меня есть он, но это использует устаревший метод.

РЕДАКТИРОВАНИЕ - я возвратился и использовал

SimpleDateFormat formatter = new SimpleDateFormat(); 
model.setDate(formatter.parse(request.getParameter("date");



Дата находится в формате MM/DD/YYY как 23.07.2010, но я получаю ParseException

От чего это могло быть?

8
задан IAdapter 29 July 2010 в 17:52
поделиться

9 ответов

Вы правы, что это плохая практика. Практически во всех случаях устаревшие методы сообщают вам, что использовать вместо них, и это не исключение (см. Документацию Javadocs ).

Вы пытаетесь создать Дата из строки . Но в каком формате находится строка? Как его разобрать? Это формат даты в Великобритании или США?

"Правильный" способ сделать это - создать экземпляр SimpleDateFormat и вызвать его метод parse () , передав его в текст нить. Это гарантированно будет работать в будущем, а сейчас будет более надежным.

6
ответ дан 5 December 2019 в 10:00
поделиться

Многие люди упоминали, что означает устаревшие, но я не вижу никаких объяснений, почему эти методы устарели:

Sun (до того, как они были частью Oracle) устарел ряд методов в Date , чтобы заставить людей вместо этого использовать классы Calendar / GregorianCalendar для манипулирования датой.

3
ответ дан 5 December 2019 в 10:00
поделиться

Что означает "Deprecated"

Возможно, вы слышали термин, "самоуничижительный юмор", или юмор. который минимизирует важность говорящего. Устаревший класс или метод - это то же самое. Он больше не является важным. Он настолько неважен, что фактически, что вы не должны больше использовать его, поскольку он был заменен и и может прекратить свое существование в будущем.

Java предоставляет способ выразить устаревание, потому что по мере того, как класс эволюционирует, его API (интерфейс прикладного программный интерфейс) неизбежно меняется: методы переименовываются для последовательности, новые и лучшие методы добавляются новые и лучшие методы, и изменяются поля. Но такие изменения создают проблему. Вам необходимо сохранить старый API до тех пор, пока пока разработчики не перейдут на новый, но вы не хотите, чтобы они чтобы они продолжали программировать на старом API.

Возможность устаревания класса, метод или поле-член решает эту проблему. Java поддерживает два механизма обесценивания: аннотация, (поддерживается начиная с J2SE 5.0) и тег Javadoc (поддерживается с версии 1.1). Существующие вызовы старого API продолжают работать, но аннотация вызывает компилятор выдает предупреждение, когда он обнаруживает ссылки на устаревшие элементы. Метка Javadoc и соответствующие комментарии предостерегают пользователей от использования устаревшего элемента и сообщают что нужно использовать вместо него.

http://download-llnw.oracle.com/javase/1.5.0/docs/guide/javadoc/deprecation/deprecation.html

2
ответ дан 5 December 2019 в 10:00
поделиться

Вы правы, не рекомендуется использовать устаревшие методы. Это связано с тем, что эти методы могут иметь проблемы в некоторых ситуациях или были заменены более оптимистичными решениями, а также будущие версии могут их не поддерживать.

2
ответ дан 5 December 2019 в 10:00
поделиться

Устаревший означает, что его планируется удалить из-за ошибок или по другой плохой причине. Для анализа строк лучше использовать SimpleDateFormat.parse (); .

1
ответ дан 5 December 2019 в 10:00
поделиться

В общем, когда Sun (Oracle, что угодно) объявляет метод Java устарело, это означает, что они передумали включать его, отговаривают вас от его использования и могут удалить его в какой-то будущей версии. Конечно, вероятно, пройдет много времени, прежде чем он будет удален, поскольку кто знает, сколько существующего кода там используется, и какой смысл ломать существующие программы только потому, что изобретатели Java думают, что теперь они лучше понимают, как сделать что-то?

По-видимому, у них была веская причина отказаться от чего-либо, поэтому вам следует выяснить, ПОЧЕМУ они говорят, что какая-то новая функция лучше.

В случае устаревших методов Date обычно это означает, что они предлагают вам теперь использовать классы Calendar или SimpleDateFormat. В вашем случае, наверное, последнее.

1
ответ дан 5 December 2019 в 10:00
поделиться

устарело : то, что существует в текущей версии Java, но в какой-то момент будет удалено из будущих версий.

Для вашего редактирования вам необходимо правильно инициализировать SimpleDateFormat, чтобы он знал, какой формат поступает. Для формата 22.07.1978:

SimpleDateFormat sdf = new SimpleDateFormat ("MM / dd / yyyy");

0
ответ дан 5 December 2019 в 10:00
поделиться

Ничего не сломается, если вы воспользуетесь ими ... пока.

Но они вполне могут быть удалены в будущих версиях.

-1
ответ дан 5 December 2019 в 10:00
поделиться

Устаревшие объекты или методы просто означают, что если вы хотите использовать их в текущем проекте, лучше используйте то, что рекомендовано .Причина, по которой он все еще используется, заключается в устаревших кодах, которые использовали устаревший метод до того, как он стал устаревшим. Типичный пример - метод StringTokenizer vs String.split () .

В примере с датой используйте SimpleDateFormat , чтобы выполнить преобразование из String в Date. Это позволяет вам создать формат даты, из которого ваша строковая дата может быть проанализирована для создания объекта Date.


Для вашего РЕДАКТИРОВАТЬ сделайте это

SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy"); 

model.setDate(formatter.parse(request.getParameter("date")));

ParseException, поскольку вы не предоставили структуру формата даты, поэтому SimpleDateFormat не знал, как была структурирована ваша дата.

3
ответ дан 5 December 2019 в 10:00
поделиться
Другие вопросы по тегам:

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