注意:这个问题起源于一个死链接,该链接是之前的SO问题,但问题如下...
请看这段代码(注意:我知道这段代码不会“运行”,应该使用Integer::compare
-- 我只是从链接的问题中提取出来的):
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());
根据.min()
和.max()
的javadoc文档,它们的参数都应该是一个Comparator
。但是这里使用的是Integer
类的静态方法引用,所以为什么这个代码还可以编译通过呢?
Integer
类的方法不能成为Comparator
类的方法是荒谬的,但事实并非如此。 - Christoffer Hammarström