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::compareharus 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 Integerkelas.
Jadi, mengapa ini dikompilasi?
Integerbukan metode Comparator.
Integer::comparebukanInteger::maxdanInteger::min.