Java - 实现我自己的 Stream [关闭]

Posted

技术标签:

【中文标题】Java - 实现我自己的 Stream [关闭]【英文标题】:Java - Implementing my own Stream [closed] 【发布时间】:2017-10-26 07:22:48 【问题描述】:

是否可以实现自定义流? 除了 IntStream 或 LongStream,我还想创建一个 StringStream。

我想添加额外的方法,例如 storeToFile(path)。

我认为实现 Stream 需要做很多工作。标准实现是 java.util.stream.ReferencePipeline,但我不能直接实例化它。 有没有简单的解决办法?

感谢您的帮助。

【问题讨论】:

一个 StringStream 已经存在。这是一个 Stream. Why is "Is it possible to..." a poorly worded question? 是的,但我想添加额外的方法。例如 storeToFile(String: path). 流是一个接口。所以,是的,您可以创建一个实现该接口的类,或者创建一个扩展 Stream 的接口。它与任何其他界面没有什么不同。 【参考方案1】:

是的,你可以创建任何你想要的流。

扩展接口BaseStream

public interface MyStream extends BaseStream<MyClass,MyStream>

然后实现它

public class DefaultMyStream implements MyStream

    //...

在编写您的实现时,可能会交叉检查另一个流实现。


我不知道这样做一定有很大的优势。也许有一个有效的用例。无论如何,这是可能的。

【讨论】:

我认为实现 Stream 需要做很多工作。标准实现是 java.util.stream.ReferencePipeline,但我不能直接实例化它。有简单的解决方案吗? 你几乎肯定是对的,但这不是你问的。听起来您应该创建一个新问题或大量编辑这个问题。 感谢您的帮助。【参考方案2】:

听起来您想要一个自定义的 Collector,而不是 Stream。您可以使用 Stream.of() 从任何东西中创建 Stream,但您需要收集器。

storeToFile 将是一个 StoringToFileCollector 之类的......

【讨论】:

以上是关于Java - 实现我自己的 Stream [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

java ,返回流,IOException: Stream Closed,TryWithResource

当相应的Stream关闭或我是否必须明确关闭它们时,Java FileChannel锁是否关闭?

用poi多次调用write()方法报java.io.IOException: Stream closed。求大神指导。

使用 Java Stream api 从对象层次结构中提取数据 [关闭]

java 代码开启和关闭 h5 stream 录像功能

如何知道 BufferedReader Stream 是不是关闭