gpt4 book ai didi

java - Java 8 中有委托(delegate)吗?

转载 作者:搜寻专家 更新时间:2023-10-30 21:00:03 25 4
gpt4 key购买 nike

Java 8 中有委托(delegate)吗?

如果不是,我们如何在 JDK 8 中使用没有委托(delegate)的 lambda 表达式

什么是 method references ?他们和委托(delegate)一样吗?

最佳答案

JDK 8 中没有委托(delegate)。在底层,lambda 是功能接口(interface)的实例(一个接口(interface)只有一个抽象方法)。根据您传递 lambda 的位置,编译器可以确定它正在实现的接口(interface)。例如,Collections.sort 方法接受一个 Comparator 实例作为第二个参数。 Comparator 恰好是一个功能接口(interface),因此编译器将检查您传递的 lambda 是否与 Comparator 中的抽象方法匹配。

方法引用只是一种简化。当您的 lambda 只是调用现有方法时,您可以使用这种新语法来简化构造。链接教程中的示例很好地展示了它:

代替:

Arrays.sort(rosterAsArray,
(a, b) -> Person.compareByAge(a, b)
);

有方法引用更简单:

Arrays.sort(rosterAsArray, Person::compareByAge);

看看 lambdafaq .

关于java - Java 8 中有委托(delegate)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20311779/

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