繁体   English   中英

将新方法添加到由许多类直接实现的接口

[英]Add new method to an interface which is directly implemented by many classes

我对java接口有一个小问题

有没有办法在不修改实现它的类的情况下向java接口添加新方法。

条件是我不应该介绍新的界面

有没有办法在不修改实现它的类的情况下向java接口添加新方法。

没有。

条件是我不应该介绍新的界面

如果条件还包括不修改直接实现接口的许多类,则会给您一个不可能完成的任务。

这就是为什么接口通常伴随着抽象的Adapter类的原因,它们以无操作的方式实现所有方法。 实现类然后扩展适配器而不是实现接口,因此如果需要添加接口,则只需要修改接口和适配器。

你想要做的事情从根本上是不可能的。 除非(正如评论中指出的那样)使用Java 8。

Java 8引入了默认或防御方法的概念,允许您向接口添加方法并在接口内提供该方法的默认实现。

http://zeroturnaround.com/rebellabs/java-8-explained-default-methods/

其余的答案适用于8之前的任何Java版本:

接口描述了类中的方法。 如果向接口添加新方法,则实现该接口的所有类都必须实现该方法。 除非幸运的是,你添加的方法已经存在于每个实现类中,如果不添加新接口或更改类,这是不可能的。

如果您的接口是一个抽象类,那么您可以添加一个不执行任何操作的存根方法,并允许覆盖它,但接口没有可选方法的概念。

通过使用抽象类,我们可以解决这个问题。

   interface A{
     void a();
     void b();
    }

  Class a implement A 

  Class b implement A ...

如果任何新方法到达创建一个抽象类并将该方法添加到其中

 abstract class adapter { 
       abstract void c();
     }

现在为必要的类扩展此适配器类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM