Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDK7中真的有`ResultSet.getObject(String,Class<;T>;)吗?_Java_Compatibility_Java 7 - Fatal编程技术网

Java JDK7中真的有`ResultSet.getObject(String,Class<;T>;)吗?

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

我在JDK7中看到了很多更改的接口,例如,添加了
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