我无法理解方法引用的语法,其中有两个参数a
和b
,并且引用是对a
on的方法b
。
例如,我了解如何
Arrays.sort(personArray, comparators::compareByName);
相当于
Arrays.sort(personArray, (o1, o2) -> comparators.compareByName(o1, o2));
因为在这种情况下,lambda 参数与方法调用参数匹配(o1, o2)
。
但是对于这个 lambda
stream.sorted((o1, o2) -> o1.compareToIgnoreCase(o2));
我的 IDE 告诉我这相当于:
stream.sorted(String::compareToIgnoreCase);
而且我没有找到替换该语法的规则:a.method(b)
使用方法参考。
例如,如果 lambda 有三个或更多参数怎么办?那合法吗?第一个参数是否成为方法目标,其余的成为参数?