gpt4 book ai didi

java - Observer 在 Java 9 中被弃用了。我们应该用什么来代替它?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:37:01 24 4
gpt4 key购买 nike

Java 9 出来了,Observer已被弃用。这是为什么?这是否意味着我们不应该再实现观察者模式了?

最好知道什么是更好的选择?

最佳答案

这是为什么?这是否意味着我们不应该再实现观察者模式?

先回答后半部分——

YES,这确实意味着您不应该再实现 ObserverObervable

Why were they deprecated -

他们没有为应用程序提供足够丰富的事件模型。例如,他们可能只支持某事发生变化的概念,但不传达任何关于发生变化的信息。

Alex's answer前面很好地说明了 Observer 有一个弱点:所有 Observable 都是相同的。您必须实现基于 instanceof 的逻辑,并将对象转换为具体类型并放入 Observable.update() 方法中。

除此之外还有像 could not serialize the Observable 这样的错误。类,因为它没有实现 Serializable 接口(interface),并且它的所有成员都是私有(private)的。

有什么更好的替代方案?

另一方面,Listeners 有很多类型,它们有回调方法并且不需要转换。正如@Ravi 在他的 answer 中指出的那样你可以使用 PropertyChangeListener反而。

对于它的其余部分,@Deprecation 已标记有适当的文档,以探索其他答案中链接的其他包。


请注意,弃用还标有 this mail 中所述的分析-

These days, anyone encountering these is probably hitting them by mistake while using RxJava or other reactive-stream frameworks. In which case, users will normally want to instead use the jdk9 java.util.concurrent.Flow APIs that all reactive-streams frameworks should be compatible/interoperable within their planned upcoming jdk9-compatible versions.

编辑:还值得一提的是,API 的弃用主要不只是因为上述原因,还因为无法维护上述遗留代码在对一些错误报告(上面链接)的评论中提出这些错误报告是为了以某种方式改进其实现。

关于java - Observer 在 Java 9 中被弃用了。我们应该用什么来代替它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43644540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com