如何在Java8中强制对流进行即时评估

彼得

我想知道如何在Java8中对每个映射函数强制立即求值?我现在遇到的情况是,我需要进行多级转换(从ObjectA-> ObjectB-> ObjectC-> ObjectD),并且对于某个对象,此转换的每一级都可能出现故障(抛出异常)。例如

 // stream -> map -> collect sequence
 lists.stream()
      .map(aToB)
      .collect(Collectors.toList())
      .stream()
      .map(bToC)
      .collect(Collectors.toList())
      .stream()
      .map(cToD)
      .collect(Collectors.toList())

 // Try api is from javaslangs
 Function<ObjectA, ObjectB> aToB = a -> Try.of(() -> .....)
                                           .onFailure(....)
                                           .get();

 Function<ObjectB, ObjectC> bToC = b -> Try.of(() -> .....)
                                           .onFailure(....)
                                           .get();

 Function<ObjectC, ObjectD> cToD = c -> Try.of(() -> .....)
                                           .onFailure(....)
                                           .get();

我想测试单元测试中的每个转换,例如测试是否抛出异常,以及在将A转换为B之类的异常时,如果A未能成功转换为C,但是由于存在延迟评估,因此无法测试,我能想到的唯一方法是执行此一系列steam() -> map(...) -> collect(...)调用以强制立即进行评估。我想知道是否有更好的方法来编写此代码。

路易斯·瓦瑟曼

这里有一些简单的想法:

  • 测试单个元素集合上的流操作的整个链。验证是否在您期望的地方抛出了异常。
  • 不必担心测试流框架。您可以直接在测试中直接应用这些功能,而无需遍历所有流。

一般来说,不要尝试在测试中处理惰性评估:测试功能,并信任流框架在实际代码中做正确的事情。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Node.js中对流进行Gunzip?

来自分类Dev

如何在Node.js中对流进行Gunzip?

来自分类Dev

在Scala中进行即时评估

来自分类Dev

我应该如何对流进行汇总?

来自分类Dev

对Java8流进行分组而不收集它

来自分类Dev

如何在某些时间段内对流进行分区(GroupBy)并监视Rx中元素的缺失?

来自分类Dev

通过区分函数对流进行分区

来自分类Dev

如何强制编译器在编译时评估开关?

来自分类Dev

如何使用 Flink SQL 按事件时间对流进行排序

来自分类Dev

Java 8流-对元组流进行分组

来自分类Dev

如何在Aurelia中强制进行绑定重新评估或重新渲染

来自分类Dev

如何在编译时评估表达式?

来自分类Dev

如何在编译时评估原始模板与类模板?

来自分类Dev

如何在Java8流中管理附带影响

来自分类Dev

如何在Java8中过滤列表?

来自分类Dev

如何在Java8中进行迭代时有效检查其他条件?

来自分类Dev

如何在PHP中对此进行评估

来自分类Dev

如何在PHP中对此进行评估

来自分类Dev

如何在 Java <= 8 中强制执行模块边界

来自分类Dev

如何在创建生成器时而不是在迭代时评估Python生成器中的值?

来自分类Dev

如何对静态图片(视频)流进行即时编码,以将其从C#发送到Python?

来自分类Dev

如何在“unsafePerformIO”中强制评估 IO 操作?

来自分类Dev

使用比较器接口和Java 8流进行排序

来自分类Dev

如何强制每秒进行X次评估?

来自分类Dev

如何在nginx上进行即时解密?

来自分类Dev

如何在nginx上进行即时解密?

来自分类Dev

如何对rxjs中的现有流进行排序?

来自分类Dev

如何在java8中的字符串列表中更改项目

来自分类Dev

如何使GCC在编译时评估函数?

Related 相关文章

热门标签

归档