如果可以侦听对象属性值的变化,我无法从java文档中获取。假设我的对象只有一个 int 属性字段。我需要立即执行一个操作,我的对象会改变其状态。可能吗?
你想研究Java中的观察者/可观察量。他们将允许您做您需要的事情。
网上有很多关于它的信息。
这里有一个小存根:http://docs.oracle.com/javase/7/docs/api/java/util/Observer.html
更多内容:我们什么时候应该使用观察者和可观察
如果此对象不是您的对象,并且您正在为对象的属性查找各种事件侦听器,则不,没有对象属性侦听器。
但是,如果你可以修改对象的源代码,我假设你正在使用getters和setters。所以,你会有类似的东西...
public void setIntegerValue(int num){
this.num = num;
}
最有效的方法是在 setter 中添加某种逻辑,以便在整数num
更改时执行函数:
public void setIntegerValue(int num){
this.num = num;
yourFunction(); // Let your program know that num has been modified
}
如果使用 setter 方法,则可以添加对其他方法的调用。
首先,将您的财产设为私有。
private int myProp;
然后,添加一个二传手。
public void setMyProp(int myProp) {
boolean isVariableChanged = myProp != this.myProp;
this.myProp = myProp;
// do other things
}
在这种情况下,如果变量发生更改,则方法中的布尔值将为 true,如果要防止在变量更改回其当前值时触发方法,则可以使用该布尔值。
然后,您还需要一个吸气剂。
public int getMyProp() {
return myProp;
}
通常,当类的实现发生变化时,建议使用 getter 和 setter 以使代码更易于维护。
但是,它们还使您能够将 getter 和 setter 用作伪侦听器。