Примечание: этот вопрос возник из мертвой ссылки, которая была предыдущим вопросом SO, но здесь идет ...
Посмотрите этот код ( примечание: я знаю, что этот код не будет «работать» и его Integer::compare
следует использовать - я просто извлек его из связанного вопроса ):
final ArrayList <Integer> list
= IntStream.rangeClosed(1, 20).boxed().collect(Collectors.toList());
System.out.println(list.stream().max(Integer::max).get());
System.out.println(list.stream().min(Integer::min).get());
Согласно Javadoc .min()
и .max()
, аргумент обоих должен быть Comparator
. И все же здесь ссылки на методы относятся к статическим методам Integer
класса.
Итак, почему это компилируется вообще?
Integer
не являются методами Comparator
.
Integer::compare
вместоInteger::max
иInteger::min
.