【问题标题】:Call function whenever values are changed [duplicate]每当值更改时调用函数[重复]
【发布时间】:2021-05-07 19:04:04
【问题描述】:

我可以这样做吗?

public class Test {

    public int a = 5;
    public int b = 10;

    public void change() {
        this.a += 1;
        this.b += 1;
    }

}

Test test1 = new Test();
Test test2 = new Test();

test.valueChanged((a, b) -> {
    System.out.println(a + b);
});

test2.valueChanged((a, b) -> {
    System.out.println(a - b);
};

test1.change();

// System.out.println: 17

test2.change();

// System.out.println: -5

我希望有在值更改时调用的函数。

我将创建更多次Test,我也希望创建不同的valueChanged

【问题讨论】:

  • 每当哪个值发生变化?你的意思是每当change() 被调用时?
  • 这能回答你的问题吗? How to create change listener for variable?
  • 如果你用 getter/setter 包装你的 "a" 和 "b" 字段而不是直接访问它们,你可以在 setter 中挂上一个额外的逻辑,这个 setter 会打印新值,它对你有用吗?
  • @AndyTurner 每当change() 被调用时。
  • change()中的某处添加对您想要的方法的调用。

标签: java


【解决方案1】:

如果您希望在字段更改时收到通知,那么最好的方法是将该字段设为私有并为该字段创建一个 setter 和 getter 方法。这允许您将额外的代码放入将在值更改时执行的设置器中。示例:

public class Test {
    private int val;

    public void setVal(int val) {
        this.val = val;
        // Put code here that you want to execute when the value has changed.
    }

    public int getVal() {
        return this.val;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 2019-07-18
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    相关资源
    最近更新 更多