Lưu ý: câu hỏi này bắt nguồn từ một liên kết chết là câu hỏi SO trước đó, nhưng ở đây ...
Xem mã này ( lưu ý: Tôi biết rằng mã này sẽ không "hoạt động" và Integer::comparenên được sử dụng - Tôi chỉ trích xuất nó từ câu hỏi được liên kết ):
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());
Theo javadoc của .min()và .max(), đối số của cả hai nên là a Comparator. Tuy nhiên, ở đây các tham chiếu phương thức là các phương thức tĩnh của Integerlớp.
Vì vậy, tại sao điều này biên dịch ở tất cả?
Integerkhông phải là phương pháp Comparator.
Integer::comparethay vìInteger::maxvàInteger::min.