Java,如何检测对象的属性何时发生更改



如果可以侦听对象属性值的变化,我无法从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 用作伪侦听器。

相关内容

  • 没有找到相关文章

最新更新