这样做时
Stream.of(1, 32, 12, 15, 23).map(Integer::toString);
我收到一个模棱两可的类型错误。可以理解的是,编译器无法确定我是指toString(int)还是toString()from Integer。
toString(int)
toString()
Integer
当不使用方法引用时,我可能会通过显式转换来摆脱这种情况,或者长时间写出泛型,但是如何让编译器知道我的意思呢?我可以使用什么语法(如果有)来明确表达?
没有方法可以使方法引用明确。简而言之,方法引用是仅明确的方法引用才支持的功能。因此,你有两种解决方案:
Stream.of(1, 32, 12, 15, 23).map(i->Integer.toString(i));
int
IntStream.of(1, 32, 12, 15, 23).mapToObj(Integer::toString);
这将使用静态Integer.toString(int)方法来使用int值。
Integer.toString(int)