【问题标题】:Is it a good practice to use Java Streams in POJO as attributes在 POJO 中使用 Java Streams 作为属性是一种好习惯吗
【发布时间】:2021-01-16 23:54:05
【问题描述】:

我第一次看到这个,我想知道这是否是一个好的做法,或者像往常一样取决于它。

使用流作为域中的属性而不是列表。

public class MyDomain {

    Integer id;
    Stream<SubDomain> subDomains;

}

【问题讨论】:

  • 不,这不是一个好主意,只要每个 Stream 仅用于一次性处理而不是实际的数据存储。

标签: java list collections java-stream


【解决方案1】:

不,这不是一个好习惯。流的创建是为了支持对元素流的函数式操作(请参阅official Javadoc),但不是为了持久化它们。

这是官方 Javadoc 中的另一个很好的引用:

流在以下几个方面不同于集合: 没有存储。流不是存储元素的数据结构;相反,它通过计算操作的管道从数据结构、数组、生成器函数或 I/O 通道等源传送元素。

所以不要将其用作持久性集合。

【讨论】:

    【解决方案2】:

    这不是一个好主意,一个流可以被消费一次。将其作为对象中的一个字段将使其可能需要多次使用。为此,您需要存储集合类(例如List),并在需要以流形式访问其内容时调用其stream() 方法。

    【讨论】:

      猜你喜欢
      • 2015-05-16
      • 2013-02-04
      • 1970-01-01
      • 2014-09-09
      • 2011-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多