2014-09-28 45 views
1

有時候,我面臨的情況是在一個界面中添加一個方法,這個方法已經被15個以上的類使用。在實施時,舊的類不需要這種新的方法,但這種新的方法是其他新類所必需的。在這裏,需要考慮的是,這種新方法對於舊類是可選的,對於新開發類是強制性的。 有什麼方法可以解決這個問題?向接口添加新方法的方式不會影響java6中此接口的現有子類?

我已經解決了如下的問題: 我已經創建了一個新的接口,並在這個接口中聲明瞭一個方法,並在新類中使用舊接口實現它,如果他們需要這個新方法, 。

Java8,我們有一個「默認來處理這種類型的情況,但什麼其他的方法來解決這種情況在老版本的Java?爪哇

回答

2

舊版本沒有任何辦法這就是爲什麼在Java 8中引入默認方法的原因。

請注意,JVM會很樂意加載實現接口的類,即使它沒有實際實現其所有方法(即,如果它是在新方法被添加):當調用其中一個未實現的方法時,在運行時只會有一個異常。

這就是爲什麼舊的JDBC驅動程序仍然可以在較新的JRE中工作,即使它們沒有實現所有新的JDBC方法......除非您調用其中一種新方法。

+0

是的。我同意。舊版本沒有直接解決方案,如果我們使用已經編譯好的類來運行類,即使在該接口中添加了新方法後,它仍然可以正常運行,但是我們無法繼續進行該實現。它可能在迴歸或集成測試期間失敗,或者由於子類擴展了這個類,並且它們需要被編譯的情況等等。任何解決方法就像我所提到的那樣? – 2014-09-28 18:56:48