pet*_*ter 6 java lambda functional-programming java-8 java-stream
我想知道如何强制立即评估Java8中的每个map函数?我现在的情况是我需要进行多个级别的转换(来自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();
Run Code Online (Sandbox Code Playgroud)
我想测试我的单元测试中的每个转换,例如测试是否测试抛出异常,以及如果A在将A转换为B之类的异常时未成功转换为C,但是使用惰性求值,则无法测试,我能想到的唯一方法是做这一系列的steam() -> map(...) -> collect(...)调用,迫使立即进行评估.我想知道是否有更好的方式来写这个.
这里有一些简单的想法:
一般来说,不要尝试在测试中处理惰性求值:测试函数,并信任流框架在实际代码中做正确的事情。
| 归档时间: |
|
| 查看次数: |
917 次 |
| 最近记录: |