为什么java.sql.Statement会破坏向后兼容性?
问题描述:
从版本1.6开始,在Statement
接口中声明了另外三种方法。为什么java.sql.Statement会破坏向后兼容性?
据我所知,这打破了最大的Java优势之一 - 向后兼容性。我的项目在从jdk 1.5转换到jdk 1.6后不再编译,我必须更改代码。
以这种不好的方式添加这三种方法(isPoolable
,setPoolable
,isClosed
)的推理是什么?
答
如果您实现了接口,例如,添加的接口方法是个问题。您正在编写自己的JDBC驱动程序。如果你有一个使用这些方法的库调用一个没有实现这些方法的库,你会得到一个NoSuchMethodError。
我认为这些方法被添加是因为对于大多数使用情况来说它被认为是无害的。
自1.1版以来,每种主要Java版本都添加了JDBC API方法 - 这不算什么新功能。 – skaffman
作为用户,只有在使用不实现JDBC 4的JDBC驱动程序时,才应该不会受到影响。如果您开发自己的JDBC驱动程序,那么您应该知道这是预期的:已有5个以上版本的JDBC,每个增加新的方法。 –