【发布时间】:2020-02-02 15:57:15
【问题描述】:
【问题讨论】:
【问题讨论】:
原问题的提问者 M Sach 说,不要使用默认方法,而是将默认实现放在抽象类中。
回答者 Eran 说这会破坏现有代码。
例如,假设您有自己的用 Java 7 编写的 List 实现,它不继承自 AbstractList。当您将代码迁移到 Java 8 时,会发生什么?在List 接口中突然出现了一堆你自己的List 实现没有的新方法(这些方法的“默认”实现在AbstractList,你的类没有继承)!您的代码将不再编译。
这意味着在迁移到 Java 8 时,您可能必须为现有类编写新方法。
但是,使用默认方法时,默认实现是在接口本身中,因此您不必编写新方法。
【讨论】:
List 提供forEach 方法,因此不在接口中的方法有点违背目的。