2011-10-07 192 views
4

我在JDK7中看到了很多改变的界面,例如,增加了ResultSet.getObject(String, Class<T>)。我对这种不兼容的变化感到非常惊讶,特别是因为我从来没有见过它。JDK7中是否真的有`ResultSet.getObject(String,Class <T>)?

我想当我使用JAR文件而不是尝试自己编译项目时,不兼容并不重要,对吗?

支持JDK6和JDK7的正确方法是什么?简单地实施新方法并从不使用它们就足够了吗?

回答

2

看来

<T> T getObject(int columnIndex, Class<T> type) throws SQLException 

<T> T getObject(String columnLabel, Class<T> type) throws SQLException 

是在1.7推出。 (至少它说“从1.7开始”)在the documentation。我同意,这是一个肮脏的变化。

java.sql接口还有更多更改。例如Connection,在1.7中获得了5个新的方法。希望突破性的改变是值得的。

是否只是执行新的方法,从不使用它们就足够了?

是的,但要避免使用对接口的早期版本中不存在方法@Overrides注解。

+0

我可以忍受它,但是这不是有史以来第一次在新的Java版本中引入这种不兼容的更改吗? – maaartinus

+0

呵呵,是的,除了一些小的事情......名为'enum'的变量在Java 1.5之前被允许,例如:-)但是,不能想到API中的任何重大更改。 – aioobe

+0

@maaartinus不,java.sql接口在1.1之前被扩展到1.2。 (这是我在内存中实现一个JDBC引擎的有趣项目的死亡打击,然后:突然间我必须实现更多的方法。) –

0

代替Eclipse,我会阅读ResultSet javadoc

+0

我发现它在此期间,真的有1.7'。 – maaartinus

+0

'老'方法仍然存在,对, – michael667

+0

@ michael667,是的,但在界面中引入新方法仍然是一个突破性改变。 (我同意,实际上*从界面中删除*方法会更糟*) – aioobe

0

您可以预先实施这些方法,但不能使用@Override注释。看起来Java 7没有定义任何可能阻止您在Java 6中实现新方法的新类型,但并非总是如此(例如,在Java 1.4中使用了SavePoint,但还有许多其他类型)。

相关问题