В моем коде используется Apache Commons Lang v.2 (commons-lang
). Если я обновлю свой код, чтобы вместо этого использовать v.3 (commons-lang3
), должен ли я беспокоиться о том, что мой код может начать вести себя по-другому (конечно, за исключением различий из-за исправленных ошибок и возможных новых ошибок, которые были бы нормальными и не считаются ) ?
Другими словами, могут ли lang3
иметь методы, которые также были в lang
(с точно такой же сигнатурой), но которые могут возвращать разные результаты в двух версиях?
Apache действительно упоминает обратную несовместимость, и очень четко, но я всегда понимал эти несовместимости в том смысле, что они нарушают компиляцию, а не в том смысле, что один и тот же метод может возвращать разные результаты.
Я спрашиваю об этом, потому что мне было заявлено, что некоторые из несовместимостей с предыдущими версиями, которые побудили Apache переименовать пакет с lang
на lang3
, являются методами, которые могут возвращать разные результаты. Я считаю, что это неправильное утверждение, и для меня это важно, потому что я всегда с радостью заменяю lang
на lang3
во всех import
, на которые натыкаюсь, и я только проверяю, компилируется ли он, и я действительно думаю, что я прав, но теперь, из-за этих заявлений мне сказали остановиться, что я считаю неправильным, но у меня нет информации, которую я мог бы использовать, чтобы опровергнуть эти заявления и разрешить продолжить.
import
сlang
доlang3
и только перекомпилировать. Если какое-то поведение изменяется из-за исправления ошибки или появления новой ошибки, это совершенно нормально (и маловероятно), поэтому в основном я пытаюсь понять, был ли процесс разработкиlang3
направлен на то, чтобы не изменять существующее поведение. - person SantiBailors   schedule 11.07.2019