一、废弃原因
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 里的 PropertyChangeEvent 和 PropertyChangeListener 来代替目前 Observer 和 Observable 的功能。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于