gpt4 book ai didi

java - 在 Java 8 中通过方法引用调用 toString

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:32:30 25 4
gpt4 key购买 nike

我错过了什么?为什么我必须在下面使用 Object::toString 而不是 Integer::toString?它与泛型的类型删除有什么关系吗?

Arrays.asList(1,2,3).stream().map(Integer::toString).forEach(System.out::println); //Won't compile

Arrays.asList(1,2,3).stream().map(Object::toString).forEach(System.out::println); //Compiles and runs fine

最佳答案

这与类型删除无关。

查看错误信息:

(argument mismatch; invalid method reference
reference to toString is ambiguous
both method toString(int) in Integer and method toString() in Integer match)

Integer 类有两个 toString 方法,它们与 map() 方法所期望的功能接口(interface)相匹配。一个是带有 int 参数的静态方法,另一个是覆盖 ObjecttoString()< 的 toString() 方法.

编译器不知道你是否要执行这个:

Arrays.asList(1,2,3).stream().map(i->Integer.toString(i)).forEach(System.out::println);

或者这个:

Arrays.asList(1,2,3).stream().map(i->i.toString()).forEach(System.out::println);

关于java - 在 Java 8 中通过方法引用调用 toString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27885121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com