我完全不明白编写如下表达式是如何有效的:
Comparator<String> stringComp = Comparator.nullsLast(String::compareTo);
因为:
nullsLast接受 aComparator作为参数Comparatoris的函数方法compare(T, T),它接受两个参数compareTo只接受一个参数- 如果没有双冒号运算符,我会写:
Comparator<String> stringComp = Comparator.nullsLast((s1, s2) -> s1.compareTo(s2));
那么这是否意味着,当在只接受一个参数的方法上使用双冒号运算符时,推断该方法应该在 lambda 的第一个参数上调用,使用 lambda 的第二个参数作为参数?这对我来说非常令人惊讶。