有一种情况,我有接口X,它已经用我的数千个类实现。现在我想在Interface X中添加新方法。那么如何以最小的方式进行更改以解决所有类中方法被覆盖的问题
答案 0 :(得分:7)
如果方法实现对所有类都是通用的,那么可能 abstract class
比interface
更好。
如果不是 - 无论如何你都会写这些方法。
(*)最初是评论,但我被要求将其作为答案。
答案 1 :(得分:2)
答案 2 :(得分:0)
除了其他建议(将其设为abstract
或extend
interface
)之外,还有一个选项:
使接口的所有实现者扩展基类。这样,当您向interface
添加方法时,您只需要将基本类和类特定行为的默认行为添加到(希望)只有少数实现者。
答案 3 :(得分:0)
如果你不介意在你的所有类中都没有这个方法的实现并且可以控制所有实现类,那么这是一个非常hacky的方法,可以通过3个步骤使用IntelliJ来完成,而无需去每个类:
选择一个方法并调用Refactor-> Push Down ... - 您的方法声明将出现在实现此接口的所有类中,但至少在我的IntelliJ IDEA(11.0.2)版本中没有实施,例如void doSomething();
,所以选择此定义并执行完整项目查找&替换以使用默认实现替换此字符串,例如
@Override void doSomething(){}
再次将您的方法添加到界面。