Observer 和 Observable 在 Java 9 标记为废弃

???? 努力成为Web全栈工程师! 本文由博客端 http://point9.top 主动推送

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 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2718 引用 • 7994 回帖 • 778 关注

赞助商 我要投放

回帖
请输入回帖内容 ...