接口由数千个类实现,因此如果接口发生更改,那么如何减少它

时间:2012-05-01 08:44:00

标签: java interface

有一种情况,我有接口X,它已经用我的数千个类实现。现在我想在Interface X中添加新方法。那么如何以最小的方式进行更改以解决所有类中方法被覆盖的问题

4 个答案:

答案 0 :(得分:7)

如果方法实现对所有类都是通用的,那么可能 abstract classinterface更好。

如果不是 - 无论如何你都会写这些方法。


(*)最初是评论,但我被要求将其作为答案。

答案 1 :(得分:2)

  1. 如果您的新方法对该界面的所有实现都没有意义,请不要将其添加到那里 - 创建一个扩展原始界面的新界面
  2. 如果您的所有上千个类都应该有一个默认实现 - 将您的界面更改为抽象clas

答案 2 :(得分:0)

除了其他建议(将其设为abstractextend interface)之外,还有一个选项:

使接口的所有实现者扩展基类。这样,当您向interface添加方法时,您只需要将基本类和类特定行为的默认行为添加到(希望)只有少数实现者。

答案 3 :(得分:0)

如果你不介意在你的所有类中都没有这个方法的实现并且可以控制所有实现类,那么这是一个非常hacky的方法,可以通过3个步骤使用IntelliJ来完成,而无需去每个类:

  1. 将您的方法添加到界面
  2. 选择一个方法并调用Refactor-> Push Down ... - 您的方法声明将出现在实现此接口的所有类中,但至少在我的IntelliJ IDEA(11.0.2)版本中没有实施,例如void doSomething();,所以选择此定义并执行完整项目查找&替换以使用默认实现替换此字符串,例如

    @Override void doSomething(){}

  3. 再次将您的方法添加到界面。