Java JDK7中真的有`ResultSet.getObject(String,Class<;T>;)吗?
我在JDK7中看到了很多更改的接口,例如,添加了Java JDK7中真的有`ResultSet.getObject(String,Class<;T>;)吗?,java,compatibility,java-7,Java,Compatibility,Java 7,我在JDK7中看到了很多更改的接口,例如,添加了ResultSet.getObject(String,Class)。我对这种不兼容的变化感到非常惊讶,特别是因为我从未见过讨论它 我想当我使用JAR文件而不是自己编译项目时,不兼容并不重要,对吗 支持JDK6和JDK7的正确方式是什么?仅仅实现新方法而从不使用它们就足够了吗?我会阅读 <T> T getObject(int columnIndex, Class<T> type) throws SQLException T
ResultSet.getObject(String,Class)
。我对这种不兼容的变化感到非常惊讶,特别是因为我从未见过讨论它
我想当我使用JAR文件而不是自己编译项目时,不兼容并不重要,对吗
支持JDK6和JDK7的正确方式是什么?仅仅实现新方法而从不使用它们就足够了吗?我会阅读
<T> T getObject(int columnIndex, Class<T> type) throws SQLException
T getObject(int columnIndex,类类型)抛出SQLException
及
T getObject(String columnLabel,类类型)抛出SQLException
是在1.7中引入的。(至少上面写着“从1.7开始”)。我同意,这是一种令人讨厌的变化
java.sql
接口中有更多的更改<例如,代码>连接在1.7中获得了5种新方法。希望这些突破性的改变是值得的
仅仅实施新方法而从不使用它们就足够了吗?
是的,但是避免对早期版本的界面中不存在的方法使用
@Overrides
注释。您可以预先实现这些方法,但将无法使用@Override
注释。看起来Java 7没有定义任何新类型来阻止您在Java 6中实现新方法,但情况并非总是如此(例如,Java 1.4中的用法,但还有许多其他用法)。我同时发现了它,而且自1.7以来确实存在。旧的方法仍然存在,too@michael667对但在接口中引入新方法仍然是一个突破性的变化。(我同意实际上从接口中删除方法会更糟糕!)添加方法会破坏旧的实现者,而删除方法会破坏接口的旧用户。(也许这里的引擎使用了一些代理魔法来为旧的驱动程序实现它。)我可以接受它,但这不是第一次在新的Java版本中引入这种不兼容的更改吗?呵呵,是的,除了一些小事情。。。名为enum
的变量在Java 1.5之前是允许的,例如:-)无法想象API中有任何突破性的更改。@maaartinus否,Java.sql接口以前是从1.1扩展到1.2的。(这是我在内存中实现JDBC引擎的有趣项目的致命一击,然后:突然,我不得不实现更多的方法。)
<T> T getObject(String columnLabel, Class<T> type) throws SQLException