数组Java 8类型不匹配:无法从列表<Serializable>转换为列表<String>
我有一个字符串列表:
List<String> list = Arrays.asList("a1,a2", "b1,b2");
然后,要转换列表中的所有内容,如:"a1","a2","b1","b2"
,请编写以下代码:
List<String> ss1 = list.stream()
.flatMap(s -> Stream.of(s.split(",")))
.collect(Collectors.toList());
但是我有一个错误:“类型不匹配:无法从List<Serializable>
转换到List<String>
”。我将问题处理为:
List<String> ss2 = list.stream()
.flatMap(s -> Arrays.stream(s.split(",")))
.collect(Collectors.toList());
EclipseNeon表明差异在于flatMap
返回类型。第一个flatMap
返回一个List<Serializable>
,第二个返回一个List<String>
但是Stream.of()
和Arrays.stream()
都返回一个<T> Stream<T>
(Eclipse表明它们都返回一个Stream<String>
)
同样地,Stream.of()
在内部使用(并返回的输出)Arrays.stream()
。那么,再说一遍,第一个案例有什么问题
# 1 楼答案
这是一个Eclipse错误
感谢@Tunaki
请注意方法签名:
现在,对于
Arrays.stream
,很明显,使用类型为T
的数组的调用将返回Stream<T>
。但是Stream.of
它应该返回Stream<T>
还是Stream<T[]>
?i、 e.瓦拉格的类型是什么;您是将数组作为第一个参数传递(因此varargs是数组的数组),还是将数组作为all参数传递这是你的问题