Ссылка на метод экземпляра и лямбда-параметры
У меня проблемы с пониманием синтаксиса для ссылки на метод, где есть два параметра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)
со ссылкой на метод.
Например, что если в лямбде есть три или более параметров? Это законно? Первый параметр становится целью метода, а остальные становятся параметрами?