当前位置: 首页 > 面试题库 >

如何在方法引用(整数的toString)上修复歧义类型?

伯彦君
2023-03-14
问题内容

这样做时

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

我收到一个模棱两可的类型错误。可以理解的是,编译器无法确定我是指toString(int)还是toString()from Integer

当不使用方法引用时,我可能会通过显式转换来摆脱这种情况,或者长时间写出泛型,但是如何让编译器知道我的意思呢?我可以使用什么语法(如果有)来明确表达?


问题答案:

没有方法可以使方法引用明确。简而言之,方法引用是仅明确的方法引用才支持的功能。因此,你有两种解决方案:

  1. 使用lambda表达式:
Stream.of(1, 32, 12, 15, 23).map(i->Integer.toString(i));
  1. (至少在我看来更是如此)int当源int仅由原始值组成时,请使用原始值流:
IntStream.of(1, 32, 12, 15, 23).mapToObj(Integer::toString);

这将使用静态Integer.toString(int)方法来使用int值。



 类似资料:
  • 我编写了这个方法,检查下一个数组的索引数中是否包含一个数字,如果至少有一个数字是下一个数组的一部分,它将进入计数器,如果计数器的值大于0,它将进入一个变量“check”,该变量将等于true。 有一个索引为false就足以使整个数组为false。 例如,根据我构建的方法正确的数组:int[]arr={12,527,71,114,49,190}; 这就是方法的解释。现在来解决我的问题。这个方法只适用

  • 有人能告诉我这些方法模棱两可的原因吗?提前谢谢你。

  • 问题内容: 我正在使用两个表从数据库中查询,并收到问题标题中描述的错误。在某些情况下,我需要查询的字段在表A中,而其他字段在表B中。我动态创建要搜索的列(可以在表A或表B中),而我的代码中的WHERE子句是导致错误。 是否有一种动态的方法来解决此问题,例如,如果列位于表B中,然后使用表B进行搜索,或者INNER JOIN是否应该解决此问题(当前不是) 表A 栏位:id 表B 栏位:id SQL代码

  • 如何编写一个toString()方法,为三名员工打印名称和computePay,小数点后两位?在我添加StringBuilder之前,该程序正在工作(将名称和周支付打印到命令行)。感谢任何帮助。

  • 问题内容: 今天就去旅行。我注意到我可以将结构文字传递给与指向结构的指针关联的方法,反之亦然。为什么允许这样做? 输出: 问题答案: 请参阅方法集: 一个类型可能具有与之关联的方法集(§接口类型,§Method声明)。接口类型的方法集是其接口。其他任何类型T的方法集都包含接收者类型T的所有方法。相应指针类型 T的方法集是接收者 T或T的所有方法的集合(也就是说,它还包含T)。进一步的规则适用于包含