此代码有效(取自 Javadoc):
List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
String commaSeparatedNumbers = numbers.stream()
.map(i -> i.toString())
.collect(Collectors.joining(", "));
这个无法编译:
int[] numbers = {1, 2, 3, 4};
String commaSeparatedNumbers = Arrays.stream(numbers)
.map((Integer i) -> i.toString())
.collect(Collectors.joining(", "));
IDEA 告诉我“lambda 表达式中有一个不兼容的返回类型字符串”。
为什么 ?以及如何解决这个问题?
原文由 Denys Séguret 发布,翻译遵循 CC BY-SA 4.0 许可协议
Arrays.stream(int[])
创建一个IntStream
,而不是Stream<Integer>
。因此,在将int
映射到对象时,您需要调用mapToObj
而不仅仅是map
。这应该按预期工作:
你也可以写: