【发布时间】:2018-07-15 11:43:44
【问题描述】:
使用Stream.of创建泛型流很方便,但是如果我想创建一个只有一个元素的Stream<String[]>呢?
假设我有:
String[] tropicalFruits = new String[] {"pineapple", "banana", "mango"};
String[] fruits = new String[] {"melon", "peach", "apple"};
然后Stream.of(tropicalFruits, fruits) 产生两个元素的Stream<String[]>。如何为单个元素的流实现相同的效果?如果我尝试:
Stream<String[]> fruityStream = Stream.of(tropicalFruits);
我明白了:
错误:不兼容的类型:推理变量
T不兼容 界限
等式约束:java.lang.String[]
下界:java.lang.StringStream<String[]> fruityStream = Stream.of(fruits); ^---------------^
我已经用谷歌搜索过这个并在 SO 中搜索过,但我什么也没得到。在我看来,这不是一个非常不寻常或深奥的问题,所以我没有得到任何答案(或者我没有使用正确的关键字搜索)有点令人惊讶。
【问题讨论】:
-
你可以使用 Stream.Builder
-
另一个问题的正确答案。 :)
-
为什么不同?
Stream<String[]> stream = Stream.<String[]>builder().add(new String[] {"a", "b"}).build();也是正确的解决方案,尽管它不像 accepted 答案那么简单。 @阿尔夫 -
你的解决方案没有使用
Stream.of,这才是重点。
标签: java java-8 java-stream variadic-functions type-inference