Я понимаю, что для поддержания совместимости с исходными текстами Java никогда не вводит новые методы для открытых интерфейсов, так как это нарушает существующие клиенты, реализующие интерфейсы. Java Release notes состоянияJava 6 Исходная обратная совместимость и SQL
В целом, политика выглядит следующим образом, для любых несовместимостей перечисленных ниже, за исключением:
Техническое обслуживание релизы (такие как 1.4.1, 1.4.2 ) не ввести любые новые языковые функции или API. Они будут поддерживать совместимость источника с друг с другом.
Функциональные релизы и основные выпуски (например, 1.3.0, 1.4.0, 5.0) поддерживают вверх, но не вниз источник-совместимость.
Тем не менее, пакеты java.sql
и javax.sql
продолжают развиваться и вводить много несовместимых изменений. Например, я заметил следующие несовместимые изменения (введенные в Java 6):
java.sql.Statement
распространяетсяjava.sql.Wrapper
, требуя новых двух новых методов.java.sql.Statement
вводит 3 новых методаjava.sql.PreparedStatement
вводит 19 новых методов!java.sql.ResultSet
представляет 48 новых методов!
Вы знаете, как и почему эти методы были добавлены? Is java.sql
обрабатывается иначе, чем остальная платформа? Знаете ли вы о дискуссиях/JSR вокруг этих дополнений?
Добавление методов не нарушает совместимость, только вниз (что разрешено для основных выпусков, таких как Java 6). –
Но типы 'java.sql' являются интерфейсами, а не классами. –