我正在编写一个广泛使用响应式(Reactive)编程的网络服务器。我注意到我忘记检查是否 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
,它会抛出错误。 ,但得到的是一个空的。
关于java - 不鼓励使用 Mono<Optional<T>> 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55299998/