Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

Ссылки

Связанные вопросы

Ответ 2

Никакие методы не были удалены, но существующий код будет продолжать работать. Солнце очень сфокусировалось на обратной совместимости.

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

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

Ответ 3

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

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

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

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

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

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