不鼓励使用Mono <optional <t >>吗?

时间:2019-03-22 12:49:11

标签: java reactive-programming project-reactor

我正在编写大量使用反应式编程的Web服务器。我注意到我忘记检查Mono是否为空太多次。我正在使用WebFlux,因此它将空的Mono转换为200 OK响应,并且很难检测到这些错误。

减少这些错误的一种方法是通过使用Mono<Optional<T>>而不是Mono.empty()来明确显示不存在值。

这与Optionalnull辩论非常相似,甚至使用相同的类。尽管有很多人赞成使用Optional,并且得到了图书馆的广泛支持,但我还没有看到有人使用Mono<Optional<T>>

使用Mono<Optional<T>>有什么缺点吗?

可靠地处理缺少值的情况的更好方法是什么?

1 个答案:

答案 0 :(得分:1)

通过使用Mono<Optional<T>>而不是Mono<T>,您陷入了一个棘手的局面,即收到一个空的Mono,但是假设它始终有一个{{1 }},因此并没有真正的帮助,只会添加不必要的分配。

有一个方便的运算符Mono#single,如果您期望一个非空的Optional,但会得到一个空的运算符,它将抛出错误。