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::compare
nê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 Integer
lớp.
Vì vậy, tại sao điều này biên dịch ở tất cả?
Integer
không phải là phương pháp Comparator
.
Integer::compare
thay vìInteger::max
vàInteger::min
.