2011-11-30 60 views
2

從版本1.6開始,在Statement接口中聲明瞭另外三種方法。爲什麼java.sql.Statement會破壞向後兼容性?

據我所知,這打破了最大的Java優勢之一 - 向後兼容性。我的項目在從jdk 1.5轉換到jdk 1.6後不再編譯,我必須更改代碼。

以這種不好的方式添加這三種方法(isPoolable,setPoolable,isClosed)的推理是什麼?

+2

自1.1版以來,每種主要Java版本都添加了JDBC API方法 - 這不算什麼新功能。 – skaffman

+0

作爲用戶,只有在使用不實現JDBC 4的JDBC驅動程序時,才應該不會受到影響。如果您開發自己的JDBC驅動程序,那麼您應該知道這是預期的:已有5個以上版本的JDBC,每個增加新的方法。 –

回答

6

如果您實現了接口,例如,添加的接口方法是個問題。您正在編寫自己的JDBC驅動程序。如果你有一個使用這些方法的庫調用一個沒有實現這些方法的庫,你會得到一個NoSuchMethodError。

我認爲這些方法被添加是因爲對於大多數使用情況來說它被認爲是無害的。