java - 如何通过将单个数组与流连接来实例化字符串数组流

标签 java arrays java-stream covariance

给定一个带有签名的方法:

private String[] emitRecord(SomeType someType {...}

我想将 theRecordAsStream 定义为字符串数组流。

String[] someRecord = emitRecord(someType);
Stream<String[]> theRecordAsStream = Stream.of(someRecord);

并将其添加到现有的字符串数组流中。

return Stream.concat(theRecordAsStream, eventsStream);

不幸的是,这是不可能的,因为 Stream.of(someRecord) 返回一个 Stream,然后在 concat 上触发以下错误。

Error:(118, 65) java: incompatible types: inference variable R has incompatible bounds
equality constraints: java.lang.String[]
lower bounds: T,java.lang.String[],java.lang.String,T

处理这个问题的正确方法是什么?

最佳答案

明确告诉 Stream.of(T t) 你想要一个 Stream<String[]> ,即你告诉它 TString[] :

Stream<String[]> theRecordAsStream = Stream.<String[]>of(someRecord);

这样一来,编译器就不会将其误解为对 Stream.of(T... values) 的调用, 与 T作为String ,这就是您目前正在经历的。

关于java - 如何通过将单个数组与流连接来实例化字符串数组流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49984904/

相关文章:

java - 使用 RESTAssured 从 HTML 获取 XML 结果

arrays - 通过数组过滤器长度查询ElasticSearch

python - Cython:创建数组抛出 "not allowed in a constant expression"

java - 操作链

java - 解释性能差异

java - 不能从 Collectors.toMap 中的静态上下文引用非静态方法

java - 错误 : AnnotationException: mappedBy reference an unknown target entity property

java - 代码适用于 Windows JDK 7 但不适用于 Linux JDK 7

java - 定义在将 Spring 事务管理与 hibernate 一起使用时不在事务中运行的方法

java - 在 Java 中,如何确定多个值之一是否位于数组中?