监听变量变化

Listen for variable changes

我能否以某种方式创建一个侦听器(不是按钮)来侦听变量变化(在应用程序范围内),并在发生变化时执行一些代码?

如果可能的话,谁能举个例子说明如何做到最好?

如果您需要更多上下文来回答问题(代码等),我可以提供。但现在我只是想大致了解一下。

您可以将变量设为私有,并为其创建一个 setter。并在更改变量

后在 setter 中调用您的侦听器方法

这是一个非常棒的example

public class InformationVo extends SimpleObservable<InformationVo> {

    private String name;
    private String urls;

    public String getName() {
        return name;
    }

    public void setUrls(String urls) {
        this.urls = urls;
        notifyObservers(this);
    }

    public int getUrls() {
        return urls;
    }

    public void setName(String name) {
        this.name = name;
        notifyObservers(this);
    }
}

这里是你想要的观察者class

public class SimpleObservable<T> implements EasyObservable<T> {

    private final ArrayList<OnChangeListener<T>> listeners = new ArrayList<OnChangeListener<T>>();


    public void addListener(OnChangeListener<T> listener) {
        synchronized (listeners) {
            listeners.add(listener);
        }
    }

    public void removeListener(OnChangeListener<T> listener) {
        synchronized (listeners) {
            listeners.remove(listener);
        }
    }

    protected void notifyObservers(final T model) {
        synchronized (listeners) {
            for (OnChangeListener<T> listener : listeners) {
                listener.onChange(model);
            }
        }
    }

希望对您有所帮助。