Nota: esta pregunta se origina en un enlace inactivo que era una pregunta SO anterior, pero aquí va ...
Vea este código ( nota: sé que este código no "funcionará" y que Integer::comparedebería usarse, lo acabo de extraer de la pregunta vinculada ):
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());
Según el javadoc de .min()y .max(), el argumento de ambos debería ser a Comparator. Sin embargo, aquí las referencias de métodos son a métodos estáticos de la Integerclase.
Entonces, ¿por qué esto compila en absoluto?
Integerno son métodos de Comparator.
Integer::comparelugar deInteger::maxyInteger::min.