Java,如何检测对象的属性何时发生了变化

时间:2017-03-25 17:30:24

标签: java event-handling

如果能够监听对象属性值的变化,我无法从java文档中获取。让我们说我的对象只有一个int属性字段。我需要在当下执行一个动作,我的对象会改变它的状态。有可能吗?

3 个答案:

答案 0 :(得分:4)

您希望在Java中查看观察者/观察者。他们会让你做你需要的。

网上有很多关于它的内容。

这是一个小短文:http://docs.oracle.com/javase/7/docs/api/java/util/Observer.html

更多信息:When should we use Observer and Observable

答案 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用作伪侦听器。