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 
   }
   
}

请注意,你必须提供默认方法的实现,你还能够为现有接口定义新的静态方法,具备实现使用新的默认或静态方法加强的接口的类的用户没必要修改或从新编译它们以适应额外方法。编译


上一篇:将接口用做类型

下一篇:默认方法

相关文章
相关标签/搜索