2011-10-07 282 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,但還有許多其他類型)。

相關問題