我正在编写大量使用反应式编程的Web服务器。我注意到我忘记检查Mono
是否为空太多次。我正在使用WebFlux,因此它将空的Mono
转换为200 OK
响应,并且很难检测到这些错误。
减少这些错误的一种方法是通过使用Mono<Optional<T>>
而不是Mono.empty()
来明确显示不存在值。
这与Optional
和null
辩论非常相似,甚至使用相同的类。尽管有很多人赞成使用Optional
,并且得到了图书馆的广泛支持,但我还没有看到有人使用Mono<Optional<T>>
。
使用Mono<Optional<T>>
有什么缺点吗?
可靠地处理缺少值的情况的更好方法是什么?
答案 0 :(得分:1)
通过使用Mono<Optional<T>>
而不是Mono<T>
,您陷入了一个棘手的局面,即收到一个空的Mono
,但是假设它始终有一个{{1 }},因此并没有真正的帮助,只会添加不必要的分配。
有一个方便的运算符Mono#single,如果您期望一个非空的Optional
,但会得到一个空的运算符,它将抛出错误。