Note : cette question provient d'un lien mort qui était une question précédente de l'OS, mais c'est parti...
Voir ce code ( note : je sais que ce code ne "fonctionnera" pas et que Integer::compare
devrait être utilisée -- je l'ai juste extraite 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 la javadoc de .min()
y .max()
l'argument des deux devrait être un Comparator
. Pourtant, ici, les références aux méthodes sont des méthodes statiques de l'élément Integer
classe.
Alors, pourquoi est-ce que ça compile ?
6 votes
Notez que cela ne fonctionne pas correctement, il faudrait utiliser
Integer::compare
au lieu deInteger::max
yInteger::min
.0 votes
@ChristofferHammarström Je le sais ; notez comment j'ai dit avant l'extrait de code "Je sais, c'est absurde".
3 votes
Je n'essayais pas de te corriger, je disais aux gens en général. Vous avez donné l'impression que vous pensiez que la partie absurde est que les méthodes de
Integer
ne sont pas des méthodes deComparator
.