如果能够监听对象属性值的变化,我无法从java文档中获取。让我们说我的对象只有一个int属性字段。我需要在当下执行一个动作,我的对象会改变它的状态。有可能吗?
答案 0 :(得分:4)
您希望在Java中查看观察者/观察者。他们会让你做你需要的。
网上有很多关于它的内容。
这是一个小短文:http://docs.oracle.com/javase/7/docs/api/java/util/Observer.html
答案 1 :(得分:1)
如果此对象不是您的,并且您正在寻找对象属性的各种事件侦听器,则不会有对象属性侦听器。
但是,如果你可以修改对象的来源,我假设你正在使用getter和setter。所以,你有类似的......
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
}
答案 2 :(得分:0)
如果使用setter方法,则可以向其他方法添加调用。
首先,将您的财产设为私有。
private int myProp;
然后,添加一个setter。
public void setMyProp(int myProp) {
boolean isVariableChanged = myProp != this.myProp;
this.myProp = myProp;
// do other things
}
在这种情况下,如果变量发生变化,方法中的boolean将为true,如果要在变量更改回当前值时阻止触发方法,则可以使用该变量。
然后你还需要一个吸气剂。
public int getMyProp() {
return myProp;
}
通常,建议使用getter和setter,以便在类的实现发生更改时使代码更易于维护。
但是,它们还使您能够将getter和setter用作伪侦听器。