Примечание: этот вопрос исходит из мертвой ссылки, которая была предыдущим вопросом SO, но здесь идет...
Смотрите этот код (note: Я знаю, что этот код не будет работать и что 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
.
Итак, почему эта компиляция вообще?