0

我完全不明白编写如下表达式是如何有效的:

Comparator<String> stringComp = Comparator.nullsLast(String::compareTo);

因为:

  1. nullsLast接受 aComparator作为参数
  2. Comparatoris的函数方法compare(T, T),它接受两个参数
  3. compareTo只接受一个参数
  4. 如果没有双冒号运算符,我会写: Comparator<String> stringComp = Comparator.nullsLast((s1, s2) -> s1.compareTo(s2));

那么这是否意味着,当在只接受一个参数的方法上使用双冒号运算符时,推断该方法应该在 lambda 的第一个参数上调用,使用 lambda 的第二个参数作为参数?这对我来说非常令人惊讶。

4

0 回答 0