Nota: questa domanda proviene da un link non attivo che era una precedente domanda SO, ma qui va ...
Vedi questo codice ( nota: so che questo codice non "funzionerà" e che Integer::compare
dovrebbe essere usato - l'ho appena estratto dalla domanda collegata ):
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());
Secondo il javadoc di .min()
e .max()
, l'argomento di entrambi dovrebbe essere a Comparator
. Eppure qui i riferimenti ai metodi sono metodi statici della Integer
classe.
Quindi, perché questo compila affatto?
Integer
non sono metodi di Comparator
.
Integer::compare
posto diInteger::max
eInteger::min
.