向接口添加新方法

时间:2013-03-08 12:36:15

标签: java

我在我的代码中使用了一个接口已经存在了很长时间,并且许多类已经实现了它。 现在我必须为这个接口添加一个新方法用于新类[旧类不需要新方法]。因此,在许多地方已经建议我可以扩展旧接口并使用新方法创建新接口。 现在我的问题是使用接口实现的app启动器只引用了基接口并使用基接口我不能在新接口中调用方法。

baseInterface is extended by newInterface

Class Applauncher{

  baseInterface b;

}

可以看出,我无法在Applauncher类的“newInterface”中调用新方法。

我想要一个不会改变旧实现的解决方案。

2 个答案:

答案 0 :(得分:6)

基本上,当您需要在applauncher中调用新方法时,您可以执行以下操作:

if (b instanceof NewInterface) {
  ((NewInterface)b).newMethod();
}

这对你来说是一个解决方案吗?

答案 1 :(得分:4)

不可否认还没有发布,但是当Java 8问世时,你会对这个一般问题有一个很好的解决方案:

public interface MyInterface {
   Calendar myMethod();
   Object myMeth2() default null;
}

重点是default null位 - 默认关键字从8开始有一个新用法,允许您指定默认返回值(这意味着您不需要在所有实现中实现此方法。)