如何在Java中轻松制作自定义Stream类(与Ruby Enumerable一样)

时间:2017-04-16 20:51:36

标签: java

在Ruby中,如果将Enumerable模块混合到自己的自定义集合类中,则只需实现each方法和Enumerable的所有方法({{1 }},mapselect等)可以在您自己的课程中使用。

在Java 8中,类库是否有可以继承的接口或抽象类,这样您只需要覆盖一个方法来创建自己的reduce类?我可以使用StreamStream<T>生成Stream<T>.generate个实例,但我希望能够创建自定义Stream.Builder<T>类(无需进行大量工作)

1 个答案:

答案 0 :(得分:1)

我认为继承不是Java中为Stream设计的方法。因此,您宁愿实现Spliterator界面并根据通过此类Spliterator呈现的数据创建流,然后通过

构建流
StreamSupport.stream(data, parallel);

通过这种方式,您可以将非常特定的数据形式作为流提供,而无需使用您提到的方法将所有数据复制到流中。但是如果你真的需要覆盖一些流行为,事情变得非常奇怪。所以希望这不是你真正需要的。