java是否有任何方法可以监听对全局变量的更改以触发事件
Android,Java。是否有任何方法可以监听全局变量的更改以触发事件
例如,如果我在一个类中创建一个名为SeeMe的全局布尔变量。然后从第二个类将该全局布尔值更改为true
第一个听过这个变化的类是否可以执行Tryme()强>
你可以在下面搜索框中键入要查询的问题!
Android,Java。是否有任何方法可以监听全局变量的更改以触发事件
例如,如果我在一个类中创建一个名为SeeMe的全局布尔变量。然后从第二个类将该全局布尔值更改为true
第一个听过这个变化的类是否可以执行Tryme()强>
# 1 楼答案
您不能在java中注册变量上的观察者-这是不可能的。我将研究方法——只需为全局变量创建setter和getter。有两种可能性:
您必须为需要“监视”的每个类生成代理。此代理监视器只能有一个实现,您可以在多个类上注册它。例如,在JDK代理的情况下,您将实现方法
invoke(Object proxy, Method m, Object[] args)
,并且代理类上的所有方法调用都将通过invoke(..)进行这样的解决方案有一个很大的优势:您正在监视的类不耦合到监视框架
# 2 楼答案
您想使用Observer Pattern
您将在全局对象中实现Observable接口,然后为需要接收通知的每个类实现Observer接口
在您的例子中,持有
seeMe
的变量将位于Observable
的类中,并且seeMe
的setter方法将在值更改时调用notify()
。方法tryMe()
将是Observer
类的成员,并且在Observable
更改时将接收对update()
的调用下面是一个示例
Observable
:然后你会这样使用它:
注意,它还通过
getInstance()
实现了一个全局单例模式,以及一种通过enum
和包装器类识别哪些值发生了更改的方法