以前,我遇到了在一个接口中添加一个方法的情况,这个接口已经被15+类使用了。在实现时,旧类不需要这个新方法,但是这个新方法是其他新类所必需的。在这里,需要考虑的是,这个新方法对于旧类是可选的,对于新开发的类是强制性的。解决这个问题的方法是什么?
我已经解决了如下问题:我已经创建了一个新接口,并在这个接口中声明了一个方法,并在新类中用旧接口实现了它,如果其他旧类需要这个新方法,它也会这样做。
Java8,我们有一个“默认处理这类情况的方法,但是在旧版本的Java中解决这种情况的其他方法是什么呢?”
发布于 2014-09-28 15:52:57
早期版本的Java没有任何方法来解决这个问题。这就是为什么在Java 8中引入默认方法的原因。
注意,JVM将很高兴地加载一个实现接口的类,即使它没有实际实现它的所有方法(也就是说,如果它是在添加新方法之前编译的):在运行时调用这些未实现的方法之一时只有一个异常。
这就是为什么旧的JDBC驱动程序仍然在较新的JRE中工作,即使它们没有实现所有新的JDBC方法.当然,除非你称之为这些新方法之一。
发布于 2020-05-25 09:02:55
为此,您编写了一个新接口,并使其成为旧接口的子接口,在其中声明新方法,现在创建新类并使其成为现有类的子类,并实现新创建的接口,并在这里区分您的新方法,这里需要额外的方法,用新的声明接口更改旧接口,例如子接口和传递子类的对象,现在您也可以调用新方法,旧方法也不会影响其他类的实现。
https://stackoverflow.com/questions/26086532
复制相似问题