Observer 和 Observable 在 Java 9 标记为废弃

本贴最后更新于 1605 天前,其中的信息可能已经时异事殊

image.png

一、废弃原因

Observer 和 Observable 弃用有以下几个原因:

1、不能序列化

Observable 没有实现 Serializable 接口,它的内部成员变量都是私有的,子类不能通过继承它来对 Observable 的成员变量处理。所以子类也不能序列化。

参考:Why is java.util.Observable class not serializable.

2、不是线程安全

在 java.util.Observable 文档里没有强制要求 Observable 是线程安全的,它允许子类覆盖重写 Observable 的方法,事件通知无序以及事件通知发生在不同的线程里,这些都是会影响线程安全的问题。

参考:Documentation of java.util.Observable

3、支持事件模型的功能简单

支持事件模型的功能很简单,例如,只是支持事情发生变化的概念,但是不能提供更多哪些内容发生了改变。

二、解决方案

可以使用 java.beans 里的 PropertyChangeEventPropertyChangeListener 来代替目前 Observer 和 Observable 的功能。

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8213 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...