Java Integer 类是否有返回 Comparator 的比较方法?

问题描述 投票:0回答:2

我正在阅读Java教程,看到了这行代码:

Comparator<Integer> normal = Integer::compare;

关于右侧,我尝试寻找文档来解释比较如何返回整数对象的比较器。但我没有找到。 Java API docs 显示以下内容:

public static int compare(int x, int y)

我错过了什么?

java comparator method-reference
2个回答
3
投票

Comparator<T>
是一个具有签名
int compare(T o1, T o2);
的功能接口。来自 java.util.functiondocumentation:“函数接口为 lambda 表达式和方法引用提供目标类型。”

方法

Integer#compare(int x, int y)
与此签名匹配。因此,它的方法引用可以分配给类型为
Comparator<Integer>
的变量。

为了更好地理解这一点,我建议您阅读lambda表达式方法引用和函数式接口。


0
投票

Integer 类仅实现

Comparable
接口。

Integer
类中的compare方法不是
Comparator's
compare
方法的实现。
compare
是 Integer 类本身的静态辅助方法。

甚至在 Java 8 之前,我们在

compare
类中就有
Integer
方法。 Integer 类在这种情况下有两种方法,一种是

public static compare(Integer val1,Integer val2)

另一个

public int compareTo(Integer val)
。 //可比较的接口实现

因此,如果您调用

compare
类的
Integer
方法,它内部仍然会调用 Integer 类中定义的
compareTo
接口的
Comparable
方法的实现,如下所示。

public static int compare(int x, int y) {
 Integer.valueOf(x).compareTo(Integer.valueOf(y));  
}
© www.soinside.com 2019 - 2024. All rights reserved.