【发布时间】:2014-04-28 23:43:59
【问题描述】:
注意:这个问题源自之前的 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::compare而不是Integer::max和Integer::min。 -
@ChristofferHammarström 我知道;请注意我在代码摘录之前所说的“我知道,这很荒谬”
-
我不是想纠正你,我是在告诉一般人。你说得好像你认为荒谬的部分是
Integer的方法不是Comparator的方法。
标签: java java-8 java-stream