java - 不鼓励使用 Mono<Optional<T>> 吗?

标签 java reactive-programming project-reactor

我正在编写一个广泛使用响应式(Reactive)编程的网络服务器。我注意到我忘记检查是否 Mono空了太多次了。我正在使用 WebFlux,因此它会转换一个空 Mono200 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/

相关文章:

java - 如何复制条目以捕获并更正插入的语法

java - FutureTask.get的CancellationException异常后访问Callable

java - 需要更改前端的建议

r - 在响应式输出中使用 setSliderColor 更改 slider 颜色

c# - 可观察流上转换链(管道)的正确模式?

java - Spring Security 与 Project Reactor 集成

spring-boot - 如何连接嵌套通量

java - 使用 Velocity Template 将索引替换为值

javascript - 使用代码了解 JavaScript 中的响应式扩展

java - Spring WebClient 和长轮询