java - 如何修复方法引用上的不明确类型(整数的 toString)?

标签 java java-8

这样做时

Stream.of(1, 32, 12, 15, 23).map(Integer::toString);

我得到一个模棱两可的类型错误。可以理解,编译器无法判断我的意思是 toString(int) 还是 toString() 来自 Integer

当不使用方法引用时,我可能已经通过显式转换或写出泛型来摆脱这种情况,但是我怎样才能让编译器知道我在这里的意思?我可以使用什么语法(如果有)来明确?

最佳答案

没有办法使方法引用明确;简单地说,方法引用是一种仅支持明确的方法引用的功能。所以你有两个解决方案:

  1. 使用 lambda 表达式:

    Stream.of(1, 32, 12, 15, 23).map(i->Integer.toString(i));
    
  2. (至少我喜欢)当源仅包含原始 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/

相关文章:

java - 无法从记录集中检索多个结果

java - Spring 表达式语言 (SpEL) 中的 Elvis 运算符

java - 将 <Object, AtomicInteger> 映射到关联数组

Java 8 Stream Reduce 任意类类型

java - 不要关闭外部点击时的弹出窗口

java - 将类导入 Java 文件

java - Jersey :找不到媒体类型=多部分/表单数据的 MessageBodyReader

java - 有没有什么技巧可以在运行时知道实例泛型的实际具体类?

java - 如何计算流过滤器上的匹配项?

Java 8 - 无法在数组类型 Enum[] 上调用stream()