我的理解是,为了保持源兼容性,Java 永远不会向公共接口引入新方法,因为这会破坏实现接口的现有客户端。Java 发行说明 states
一般来说,政策如下:
除了任何不兼容的情况
进一步列出如下:
然而,包裹java.sql
and javax.sql
继续发展并引入许多不兼容的变化。例如,我注意到以下不兼容的更改(在 Java 6 中引入):
-
java.sql.Statement延伸
java.sql.Wrapper
,需要新的两种新方法。
-
java.sql.Statement引入3种新方法
-
java.sql.PreparedStatement引入19种新方法!
-
java.sql.ResultSet引入48种新方法!
您知道如何以及为什么添加这些方法吗?是java.sql
受到与平台其他部分不同的对待?您知道围绕这些添加内容的讨论/JSR 吗?
我收到 Sun 开发人员的以下回复
JDK 中针对 JDK 7 等功能版本的 API 的一般演变策略是
- 不要破坏二进制兼容性(如 JLSv3 第 13 章中定义)
- 避免引入源不兼容的情况
- 管理行为兼容性变化
(有关不同类型兼容性的更多信息,请参阅
“兼容性的种类:源、二进制和行为”
and
“兼容进化的BigDecimal”
向接口添加方法是二进制的兼容的 but source不兼容,所以不常见。一般来说,接口的实现越广泛,我们向其添加方法的可能性就越小。 JDBC 区域是此策略的一个例外,它使用更宽松的升级规则,但是当人们想要升级到新的 JDK 版本时,这确实会导致真正的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)