【发布时间】:2021-07-18 13:20:59
【问题描述】:
我正在阅读 Java tutorial 并看到这行代码:
Comparator<Integer> normal = Integer::compare;
关于右侧,我尝试查找解释 compare 如何为 Integer 对象返回 Comparator 的文档。但我没有找到。 Java API docs 显示如下:
public static int compare(int x, int y)
我错过了什么?
【问题讨论】:
-
是什么让您认为
compare返回Comparator?这将如何运作? -
Integer::compare 将方法称为 lambda,它会自动强制转换为可比较的 b/c 可比较是支持从 lambda 强制转换的接口之一。
-
我认为支持 lambda 强制转换的接口术语是功能接口
-
Integer::compare是一个方法引用,它是定义功能接口实现的一种方式。该方法引用等同于(a, b) -> Integer.compare(a, b),它是一个lambda 表达式。 -
@JörgWMittag - 你最初的反应似乎有点苛刻。我想 OP 的思考过程是,由于 RHS 上的“某物”生成了一个可分配给 Comparator 的值,因此“比较”方法以某种方式“返回”它。我们可能知道该方法甚至没有被调用,但 OP 显然没有,否则他不需要问这个问题。
标签: java comparator method-reference