Java 8 流的 .min() 和 .max(): 为什么会编译?
注意:这个问题源于一个死链接,这是以前的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,两者的参数都应该是 .然而,这里的方法引用是Integer
类的静态方法。Comparator
那么,为什么会编译呢?