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::compareverwendet 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 IntegerKlasse.
Warum wird das überhaupt kompiliert?
Integerkeine Methoden von sind Comparator.
Integer::compareanstelle vonInteger::maxund verwendet werden sollteInteger::min.