JDK 9中已弃用Java的Observer和Observable

在博客文章《 应用JDK 9 @Deprecated增强功能》中 ,我讨论了JDK 9中 @Deprecated批注中对forRemoval()since()可选元素(方法)的添加 。 我在那篇文章中说:“在Java SE API上应用新的JDK 9 @Deprecated方法还可以指导如何使用它们。” 在本文中,我将研究增强的@Deprecated批注对JDK类java.util.Observable的应用

几乎从一开始就存在java.util.Observable类(自Java 1.0起)。 从JDK 9开始,它将被标记为已弃用。 以下屏幕快照显示了Web浏览器中此类的Javadoc表示形式的一部分。

这是我上一篇博文中描述的类别“不推荐使用,无拆除计划”的示例。 since()的存在提供了有关何时不推荐使用的信息(JDK 9),而缺少forRemoval()表明缺少具体的计划来实际删除该类。 还以类似的方式弃用了java.util.Observer接口 ,并且其文档引用了Observable类的文档。

Observable文档不仅在不推荐使用时进行中继,而且还记录了Observable的问题,这些问题使不推荐使用,并提供了有关可能使用的替代Observable重要信息:


此类和Observer接口已被弃用。 Observer和Observable支持的事件模型非常有限,Observable传递的通知顺序未指定,并且状态更改与通知不一一对应。 对于更丰富的事件模型,请考虑使用java.beans包。 为了在线程之间进行可靠且有序的消息传递,请考虑使用java.util.concurrent包中的并发数据结构之一。 有关反应式流样式的编程,请参阅Flow API。

这是一个很好的例子,说明Java开发人员如何使用Javadoc标记@deprecated来提供与弃用相关的更详细的信息,甚至可以使用增强的@Deprecated注释来提供。 JEP 277 (“增强的弃用”)明确列出了统一的Javadoc标签@deprecated和注释@Deprecated为“非目标”:“该项目的目标不是将@deprecated的Javadoc标签与@Deprecated注释统一。 ”

可以弃用ObservableObserver其他详细信息可以在JDK-8154801中找到(“弃用Observer和Observable”)。 Josh Bloch 于19992月发表了一个引用,作为JDK-4180466的一部分(“为什么java.util.Observable类不能序列化。”):


此类不再处于积极开发中。 它在JDK中基本上未使用,并且在大多数情况下已被1.1 Beans / AWT事件模型所取代。 …可观察性已被废弃,并且不再处于活跃状态。

在大多数情况下,似乎ObserverObservable使用并不多 ,因此弃用不应该是一个大问题,尤其是考虑到没有明确的计划将其完全删除时。

翻译自: https://www.javacodegeeks.com/2017/05/javas-observer-observable-deprecated-jdk-9.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值