错误:类型不兼容:<匿名观察者<AverageBudget >>无法转换为观察者<?超级列表<平均预算>>

时间:2019-12-11 13:55:34

标签: java android android-studio

我使用的是观察者,试图修复我的代码时,观察者收到错误消息,然后按Alt + enter快速修复它,现在它像这样被划掉了: enter image description here

老实说,我不知道我是如何做到的,也不知道如何恢复它。如果有任何方法可以还原我所做的工作,请告诉我。

1 个答案:

答案 0 :(得分:0)

Observer上的划线表示它已弃用。 您可以在导入列表中进行检查,然后在其中找到包含观察者的导入。有人说,它已过时,您不应再实现ObserverObservable

如何here不推荐使用它。

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

也许,可以使用侦听器模式,而不是使用观察器,因为它们都是相似的。 但是观察者有一个弱点:所有可观察的事物都是相同的。您必须实现基于instanceof的逻辑,并将对象转换为具体类型到Observable.update()方法中。

侦听器不同。侦听器类型很多。例如鼠标侦听器,键盘侦听器等。每个侦听器都有几种回调方法(即keyPressed()keyReleased()等)。因此,您无需在事件处理程序中实现应回答“是我的事件”这一问题的逻辑。

我认为这就是为什么最好使用监听器模型的原因。

要添加一个could not serialize the Observable类之类的错误,因为它没有实现Serializable接口,并且其所有成员都是私有的。

有什么更好的替代方法?

另一方面,`监听器有很多类型,它们具有回调方法,不需要强制转换。正如@Ravi在他的回答中指出的那样,您可以改为使用PropertyChangeListener

对于其余部分,@Deprecation已标记有适当的文档,以探索与其他答案相关联的其他软件包。

希望有帮助。