Java 获取观察对象的值?

Java 获取观察对象的值?,java,Java,我如何获得观看的的值,即“新值” 代码来源: 输出: setValue method called... Value changed setValue method called... Value changed: New Value 第40行: System.out.println("Value changed" + new value of watched!); // that's what I want. 想要的输出: setValue method called... Value

我如何获得观看的
的值,即“新值”

代码来源:

输出:

setValue method called...
Value changed
setValue method called...
Value changed: New Value
第40行:

System.out.println("Value changed" + new value of watched!); // that's what I want.
想要的输出:

setValue method called...
Value changed to New Value

您已经有了一个setter方法,其形式为
setValue
,因此现在只需实现一个相应的getter方法:

import java.util.Observable;
import java.util.Observer;

class ObservedObject extends Observable {
    private String watchedValue;

    public ObservedObject(String value) {
        this.watchedValue = value;
    }

    public String getWatchedValue() {
        return watchedValue;
    }

    public void setWatchedValue(String value) {
        if (!watchedValue.equals(value)) {
            this.watchedValue = value;
            setChanged();
        }
    }
}

public class ObservableDemo implements Observer {
    public String name;

    public ObservableDemo(String name) {
        this.name = name;
    }

    public static void main(String[] args) {
        ObservedObject watched = new ObservedObject("Original Value");
        ObservableDemo watcher = new ObservableDemo("Watcher");
        watched.addObserver(watcher);
        System.out.println("setValue method called...");
        watched.setWatchedValue("New Value");
        if (watched.hasChanged()) {
            System.out.println("Value changed: " + watched.getWatchedValue());
        } else
            System.out.println("Value not changed");
    }

    public void update(Observable obj, Object arg) {
        System.out.println("Update called");
    }
}
输出:

setValue method called...
Value changed
setValue method called...
Value changed: New Value

通过提供如下所示的getter函数并调用notifyobservators(),可以从Observable访问新值
设置值(字符串值)

并修改以下方法以获取新值

public void update(Observable obj, Object arg) {
   System.out.println("Update called :"+obj.getValue());
 }