Catatan: pertanyaan ini berasal dari tautan mati yang merupakan pertanyaan SO sebelumnya, tetapi begini ...
Lihat kode ini ( catatan: Saya tahu bahwa kode ini tidak akan "berfungsi" dan yang Integer::compare
harus digunakan - Saya baru saja mengekstraknya dari pertanyaan yang ditautkan ):
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());
Menurut javadoc dari .min()
dan .max()
, argumen keduanya harus a Comparator
. Namun di sini referensi metode adalah metode statis Integer
kelas.
Jadi, mengapa ini dikompilasi?
Integer
bukan metode Comparator
.
Integer::compare
bukanInteger::max
danInteger::min
.