У меня возникли проблемы с пониманием синтаксиса для ссылки на метод, где есть два параметра a
и b
, а ссылка относится к методу a
на b
.
Например, я понимаю, как
Arrays.sort(personArray, comparators::compareByName);
эквивалентно
Arrays.sort(personArray, (o1, o2) -> comparators.compareByName(o1, o2));
потому что в этом случае параметры лямбда соответствуют параметрам вызова метода (o1, o2)
.
Однако для этой лямбды
stream.sorted((o1, o2) -> o1.compareToIgnoreCase(o2));
моя IDE говорит мне, что это эквивалентно:
stream.sorted(String::compareToIgnoreCase);
и я не нахожу правила замены этого синтаксиса: a.method(b)
ссылкой на метод.
Например, что, если у лямбды есть три или более параметра? Это законно? Становится ли первый параметр целью метода, а остальные параметрами?