gpt4 book ai didi

java - Java 8 默认方法如何帮助 lambda?

转载 作者:IT老高 更新时间:2023-10-28 20:31:53 25 4
gpt4 key购买 nike

在此 article 中声明那:

one of the major reasons for introducing default methods in interfaces is to enhance the Collections API in Java 8 to support lambda expressions.

我可以理解 @FunctionalInterface 通过说只有一个抽象方法并且 lambda 应该代表这个特定方法来帮助。

但是 default 方法是如何帮助支持 lambda 的呢?

最佳答案

举个例子,以 Collection.forEach 方法为例,该方法旨在获取 Consumer 功能接口(interface)的实例,并在Collection界面:

default void forEach(Consumer<? super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}

如果 JDK 设计者没有引入默认方法的概念,那么 Collection 接口(interface)的所有实现类都必须实现 forEach 方法,所以它是在不破坏代码的情况下切换到 Java - 8 会有问题。

因此,为了便于采用 lambdas 和使用新的功能接口(interface),如 ConsumerSupplierPredicate 等,JDK设计人员引入了默认方法的概念以提供向后兼容性,现在无需进行任何更改即可更轻松地切换到 Java - 8。

如果您不喜欢接口(interface)中的默认实现,您可以覆盖它并提供您自己的实现。

关于java - Java 8 默认方法如何帮助 lambda?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55780860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com