Какие проблемы возникают при использовании удержанных от использования методов/функций в Java?

Какие-либо проблемы возникают из-за использования функций устаревших в Java?? Если так, почему они сохраняют эту функцию?? Действительно ли это - дурная привычка при использовании устаревшего метода в Java как java.sql.Date.getMonth или getYear или getDate???

10
задан Saher Ahwal 8 August 2010 в 19:09
поделиться

6 ответов

Некоторые потенциальные проблемы:

  • Методы могут перестать существовать (на практике такого никогда не было, но по официальному определению, устаревшие методы могут быть исключены из будущих Java)
  • Могут возникнуть серьезные ошибки программирования из-за фатальных недостатков в устаревших методах (например. например, System.runFinalizersOnExit и его злой близнец Runtime.runFinalizersOnExit)
  • Может произойти повреждение данных из-за изначально небезопасных устаревших методов (например, Thread.stop)

Ссылки

Related questions

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

Код может сломаться в будущем ...

устаревшие функции являются предупреждением о том, что эта функция будет удалена.

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

1
ответ дан 3 December 2019 в 20:39
поделиться

Фактически ни один из методов не был удален, поэтому существующий код будет продолжать работать. Sun уделяет большое внимание обратной совместимости.

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

Вы можете увидеть список того, что является устаревшим в документации Javadocs. Список Java 5 находится по адресу http://download.oracle.com/javase/1.5.0/docs/api/deprecated-list.html

3
ответ дан 3 December 2019 в 20:39
поделиться

Утраченные методы сохраняются, чтобы код, написанный для предыдущей версии Java, по-прежнему функционировал. Если бы они просто удалили код, то ранее функционировавший код перестал бы работать, когда вы обновили Java до новой версии.

Использование устаревших функций не вызовет у вас никаких проблем, кроме тех, из-за которых метод был устаревшим. Однако лучше всего выяснить, что пришло на смену устаревшему методу. Устаревшая функциональность была заменена новой функциональностью, возможно, в новом классе. Большая часть устаревшей функциональности Date была перенесена в Calendar. Проверьте Javadoc для этого метода, чтобы увидеть рекомендуемую замену.

2
ответ дан 3 December 2019 в 20:39
поделиться

Как отмечали другие, Sun никогда не удаляла устаревшие методы из JDK, но то же самое нельзя сказать об устаревших методах в сторонних библиотеках. Они иногда исчезают (проект Lucene, например, имеет довольно "текучий" API, делая значительные чистки при значительных обновлениях версий).

Даже в JDK устаревший метод означает, что "теперь есть лучший способ сделать это", и вам, вероятно, следует обновить свой код, чтобы использовать новую версию.

Очень редко бывает, что устаревший метод не работает правильно для того, для чего он изначально предназначался, но замена обычно работает более надежно, или в большем количестве обстоятельств, или более общим образом. Хорошими примерами здесь являются упомянутые вами функции Date (устаревшие, потому что они плохо работают с различными локалями/календарями), или преобразования строк в байты, которые работают только с 7-битным ASCII. Эти оговорки/ограничения не могут быть исправлены без нового интерфейса, или потому, что кто-то может зависеть от "сломанной" реализации, поэтому вместо обновления метода его обесценивают и предоставляют альтернативный.

1
ответ дан 3 December 2019 в 20:39
поделиться

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

1
ответ дан 3 December 2019 в 20:39
поделиться
Другие вопросы по тегам:

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