[英]How can one add breakpoints or custom code to an interface method implemented by many subclasses?
[英]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.