Mono.just(null) 不会编译。这是为什么?
在程序层面上,我明白了。没有要处理的东西的处理队列是没有意义的。有人可以用更多的技术深度为我表达这个吗?
Mono.just(null) 不会编译。这是为什么?
在程序层面上,我明白了。没有要处理的东西的处理队列是没有意义的。有人可以用更多的技术深度为我表达这个吗?
null进入应用程序/库时存在很高的风险,如果您可以禁止它,则应该禁止它。
Null就像在你的应用程序中放了一颗炸弹,如果有可能是null,那么任何时候都有可能爆炸NullPointerException。
null始终在应用程序中产生巨大的不确定性。null您应该始终尽早清理。
null人们通过到处做检查来解决这个问题,这基本上是多余的操作。
先生。Tony Hoare -null著名的发明者声称这null是他的:
十亿美元的错误。
有很多没有 null 的编程语言,这里有一个很长的列表:
在null流中没有任何意义,因为这也意味着反应器库必须null在其代码中进行检查,以确保它们不会尝试对null值进行操作。每个人都必须对每个, ,等进行null检查,因为所有这些运算符都有潜力。flatMapmapfilteroperatorNullPointerException
所以他们有机会排除null,这很有意义,因为null它不是一个值,只有值可以在流中传输,所以这可能就是他们决定反对它的原因。
相反,他们决定使用一种类型Void来表示“无”,可以通过调用获得Mono<Void> nothing = Mono.empty();类型安全的类型,如果你触摸它就不会爆炸,并且按照你的预期行事,因为开发人员控制它,而不是运行时。
相反,我会问自己,为什么你真的需要null?我猜是因为你已经习惯了,习惯性的广告编码是不好的。
我看到 95% 的时间使用了 null,它可以被删除。
相反,学习如何在没有null.
根据 Reactive-Streams 的规定
调用 onSubscribe、onNext、onError 或 onComplete 必须正常返回,除非任何提供的参数为 null,在这种情况下,它必须向调用者抛出 java.lang.NullPointerException,对于所有其他
Reactor 是基于 Reactive Streams 的。
就个人而言,我不喜欢这个规则,但这个规则不是我设定的。既然想用,只能跟着。
我猜 Flux 是 Reactor 的核心,Mono 是附带的。对于流,禁止 NULL 可能是一个合理的选择,尽管这对 Mono 来说很不方便。
原因已经被其他人解释过了,并且 Mono.justOrEmpty(null) 的存在是为了让你的生活更轻松,如果你想让 null 导致一个空的 Mono,但这需要你的深思熟虑的决定。