Hinweis: Diese Frage stammt von einem toten Link, der eine vorherige SO-Frage war, aber hier geht ...
Siehe diesen Code ( Hinweis: Ich weiß, dass dieser Code nicht "funktioniert" und Integer::compare
verwendet werden sollte - ich habe ihn gerade aus der verknüpften Frage extrahiert ):
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());
Nach dem Javadoc von .min()
und .max()
sollte das Argument von beiden a sein Comparator
. Hier beziehen sich die Methodenreferenzen jedoch auf statische Methoden der Integer
Klasse.
Warum wird das überhaupt kompiliert?
Integer
keine Methoden von sind Comparator
.
Integer::compare
anstelle vonInteger::max
und verwendet werden sollteInteger::min
.