2014-09-28 71 views
1

有时候,我面临的情况是在一个界面中添加一个方法,这个方法已经被15个以上的类使用。在实施时,旧的类不需要这种新的方法,但这种新的方法是其他新类所必需的。在这里,需要考虑的是,这种新方法对于旧类是可选的,对于新开发类是强制性的。 有什么方法可以解决这个问题?向接口添加新方法的方式不会影响java6中此接口的现有子类?

我已经解决了如下的问题: 我已经创建了一个新的接口,并在这个接口中声明了一个方法,并在新类中使用旧接口实现它,如果他们需要这个新方法, 。

Java8,我们有一个“默认来处理这种类型的情况,但什么其他的方法来解决这种情况在老版本的Java?爪哇

回答

2

旧版本没有任何办法这就是为什么在Java 8中引入默认方法的原因。

请注意,JVM会很乐意加载实现接口的类,即使它没有实际实现其所有方法(即,如果它是在新方法被添加):当调用其中一个未实现的方法时,在运行时只会有一个异常。

这就是为什么旧的JDBC驱动程序仍然可以在较新的JRE中工作,即使它们没有实现所有新的JDBC方法......除非您调用其中一种新方法。

+0

是的。我同意。旧版本没有直接解决方案,如果我们使用已经编译好的类来运行类,即使在该接口中添加了新方法后,它仍然可以正常运行,但是我们无法继续进行该实现。它可能在回归或集成测试期间失败,或者由于子类扩展了这个类,并且它们需要被编译的情况等等。任何解决方法就像我所提到的那样? – 2014-09-28 18:56:48