Remarque: cette question provient d'un lien mort qui était une question SO précédente, mais voici ...
Voir ce code ( note: je sais que ce code ne "fonctionnera" pas et qu'il Integer::compare
devrait être utilisé - je viens de l'extraire de la question liée ):
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());
Selon le javadoc de .min()
et .max()
, l'argument des deux devrait être a Comparator
. Pourtant, ici, les références de méthode sont des méthodes statiques de la Integer
classe.
Alors, pourquoi cela se compile-il?
Integer
ne sont pas des méthodes de Comparator
.
Integer::compare
place deInteger::max
etInteger::min
.