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

 

问题描述:

这样做时

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

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

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


 

第 1 个答案:

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

  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值。


我的问题是,单击Browse按钮后,它会显示目录中的所有文件供选择,然后所选的图像会正确显示在GUI中。但是,当我第二次单击“浏览”按钮时,它仅显示旧图像,而不显示新图像。请帮助我。作为参考,我 ...