Java™ 教程(不斷髮展的接口)

不斷髮展的接口

考慮一下你開發的名爲DoIt的接口:程序員

public interface DoIt {
   void doSomething(int i, double x);
   int doSomethingElse(String s);
}

假設稍後你要向DoIt添加第三個方法,這樣如今接口變爲:segmentfault

public interface DoIt {

   void doSomething(int i, double x);
   int doSomethingElse(String s);
   boolean didItWork(int i, double x, String s);
   
}

若是進行此更改,那麼實現舊DoIt接口的全部類都將中斷,由於它們再也不實現舊接口,依賴此接口的程序員將大聲抗議。code

嘗試預測接口的全部用途,並從一開始就徹底指定它,若是要向接口添加其餘方法,能夠使用多個選項,你能夠建立一個擴展DoItDoItPlus接口:接口

public interface DoItPlus extends DoIt {

   boolean didItWork(int i, double x, String s);
   
}

如今,你的代碼用戶能夠選擇繼續使用舊接口或升級到新接口。開發

或者,你能夠將新方法定義爲默認方法,如下示例定義名爲didItWork的默認方法:get

public interface DoIt {

   void doSomething(int i, double x);
   int doSomethingElse(String s);
   default boolean didItWork(int i, double x, String s) {
       // Method body 
   }
   
}

請注意,你必須提供默認方法的實現,你還能夠爲現有接口定義新的靜態方法,具備實現使用新的默認或靜態方法加強的接口的類的用戶沒必要修改或從新編譯它們以適應額外方法。編譯


上一篇:將接口用做類型

下一篇:默認方法

相關文章
相關標籤/搜索