我正在编写一个广泛使用反应式编程的Web服务器。我注意到我忘记检查Mono
是否空了太多次。我正在使用WebFlux,因此它将空的Mono
转换为200 OK
响应,这使得很难检测到这些错误。
减少这些错误的一种方法是使用Mono<Optional<T>>
而不是Mono.empty()
来显示缺少值。
这感觉非常类似于Optional
和null
辩论,它甚至使用同一类。虽然有很多人赞成使用Optional
并且它得到图书馆的广泛支持,但我还没有看到有人使用Mono<Optional<T>>
。
使用Mono<Optional<T>>
有什么缺点吗?
什么是可靠处理缺席值案例的更好方法?
通过使用Mono<Optional<T>>
而不是Mono<T>
,你将自己置于接收空Mono
的棘手情况,但假设它将始终有Optional
的实例,所以它没有真正帮助,并且只添加了不必要的分配。
有一个方便的运算符Mono#single,如果你期望一个非空的Mono
它会抛出并出错,但是却得到一个空的qazxswpoi。