如何在方法引用(整数的toString)上修复歧义类型?
问题描述:
这样做时
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));
- (至少在我看来更是如此)
int
当源int
仅由原始值组成时,请使用原始值流:
IntStream.of(1, 32, 12, 15, 23).mapToObj(Integer::toString);
这将使用静态Integer.toString(int)
方法来使用int
值。
我的问题是,单击Browse按钮后,它会显示目录中的所有文件供选择,然后所选的图像会正确显示在GUI中。但是,当我第二次单击“浏览”按钮时,它仅显示旧图像,而不显示新图像。请帮助我。作为参考,我 ...