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::compare
deberí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 Integer
clase.
Entonces, ¿por qué esto compila en absoluto?
Integer
no son métodos de Comparator
.
Integer::compare
lugar deInteger::max
yInteger::min
.