我在JDK7中看到了很多改變的界面,例如,增加了ResultSet.getObject(String, Class<T>)
。我對這種不兼容的變化感到非常驚訝,特別是因爲我從來沒有見過它。JDK7中是否真的有`ResultSet.getObject(String,Class <T>)?
我想當我使用JAR文件而不是嘗試自己編譯項目時,不兼容並不重要,對嗎?
支持JDK6和JDK7的正確方法是什麼?簡單地實施新方法並從不使用它們就足夠了嗎?
我在JDK7中看到了很多改變的界面,例如,增加了ResultSet.getObject(String, Class<T>)
。我對這種不兼容的變化感到非常驚訝,特別是因爲我從來沒有見過它。JDK7中是否真的有`ResultSet.getObject(String,Class <T>)?
我想當我使用JAR文件而不是嘗試自己編譯項目時,不兼容並不重要,對嗎?
支持JDK6和JDK7的正確方法是什麼?簡單地實施新方法並從不使用它們就足夠了嗎?
看來
<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
註解。
代替Eclipse,我會閱讀ResultSet javadoc。
我發現它在此期間,真的有1.7'。 – maaartinus
'老'方法仍然存在,對, – michael667
@ michael667,是的,但在界面中引入新方法仍然是一個突破性改變。 (我同意,實際上*從界面中刪除*方法會更糟*) – aioobe
您可以預先實施這些方法,但不能使用@Override
註釋。看起來Java 7沒有定義任何可能阻止您在Java 6中實現新方法的新類型,但並非總是如此(例如,在Java 1.4中使用了SavePoint
,但還有許多其他類型)。
我可以忍受它,但是這不是有史以來第一次在新的Java版本中引入這種不兼容的更改嗎? – maaartinus
呵呵,是的,除了一些小的事情......名爲'enum'的變量在Java 1.5之前被允許,例如:-)但是,不能想到API中的任何重大更改。 – aioobe
@maaartinus不,java.sql接口在1.1之前被擴展到1.2。 (這是我在內存中實現一個JDBC引擎的有趣項目的死亡打擊,然後:突然間我必須實現更多的方法。) –