首页 > 解决方案 > Java 8 中需要默认方法实现

问题描述

在浏览“需要防御者方法”的答案时,我遇到了这个 答案

您能否详细说明以下在接受的答案中的含义?

您应该能够切换到 Java 8,而无需在您的类中实现新方法。

标签: javajava-8

解决方案


原始问题的提问者 M Sach 说,不是默认方法,而是将默认实现放在抽象类中。

回答者 Eran 说这会破坏现有的代码。

例如,假设您有自己的List用 Java 7 编写的实现,它不继承自AbstractList. 当您将代码迁移到 Java 8 时,会发生什么?接口中突然出现了一堆List你自己的List实现没有的新方法(这些方法的“默认”实现在AbstractList,你的类没有继承)!您的代码将不再编译。

这意味着当迁移到 Java 8 时,您可能必须为现有类编写新方法。

但是,使用默认方法时,默认实现是在接口本身中,因此您不必编写新方法。


推荐阅读