这样做时
Stream.of(1, 32, 12, 15, 23).map(Integer::toString);
我得到一个模棱两可的类型错误。可以理解,编译器无法判断我的意思是 toString(int)
还是 toString()
来自 Integer
。
当不使用方法引用时,我可能已经通过显式转换或写出泛型来摆脱这种情况,但是我怎样才能让编译器知道我在这里的意思?我可以使用什么语法(如果有)来明确?
最佳答案
没有办法使方法引用明确;简单地说,方法引用是一种仅支持明确的方法引用的功能。所以你有两个解决方案:
使用 lambda 表达式:
Stream.of(1, 32, 12, 15, 23).map(i->Integer.toString(i));
(至少我喜欢)当源仅包含原始
int
值时,使用原始int
值流:IntStream.of(1, 32, 12, 15, 23).mapToObj(Integer::toString);
这将使用静态
Integer.toString(int)
方法来使用int
值。
关于java - 如何修复方法引用上的不明确类型(整数的 toString)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21873829/