我有一个实现观察者的类,当然它需要有更新功能:
public void update(Observable obs, Object obj);
有人可以解释一下这两个参数代表什么吗?Observable 当然是我的 observable,但是,我怎样才能通过这个 Observable obs 对象访问我的 observable 字段呢?什么是对象 obj?
我有一个实现观察者的类,当然它需要有更新功能:
public void update(Observable obs, Object obj);
有人可以解释一下这两个参数代表什么吗?Observable 当然是我的 observable,但是,我怎样才能通过这个 Observable obs 对象访问我的 observable 字段呢?什么是对象 obj?
如果其他人在弄清楚如何发送第二个参数时遇到困难,就像尼克指出的那样:在notifyObservers方法调用中。
在可观察对象中:
private void setLicenseValid(boolean licenseValid) {
this.licenseValid = licenseValid;
setChanged(); // update will only get called if this method is called
notifyObservers(licenseValid); // add parameter for 2nd param, else leave blank
}
在观察者中:
@Override
public void update(Observable obs, Object arg) {
if (obs instanceof QlmLicense) {
setValid((Boolean) arg);
}
}
确保正确连接您的 Observable,否则您的更新方法将不会被调用。
public class License implements Observer {
private static QlmLicense innerlicense;
private boolean valid;
private Observable observable;
private static QlmLicense getInnerlicense() {
if (innerlicense == null) {
innerlicense = new QlmLicense();
// This is where we call the method to wire up the Observable.
setObservable(innerlicense);
}
return innerlicense;
}
public boolean isValid() {
return valid;
}
private void setValid(Boolean valid) {
this.valid = valid;
}
// This is where we wire up the Observable.
private void setObservable(Observable observable) {
this.observable = observable;
this.observable.addObserver(this);
}
@Override
public void update(Observable obs, Object arg) {
if (obs instanceof InnerIDQlmLicense) {
setValid((Boolean) arg);
}
}
}
obs
是扩展Observable
并具有notifyObservers
方法的对象。您可以obs
转换为扩展的对象,Observable
然后调用您需要的方法。
obj
是可以传递给的可选参数notifyObservers
。
观察者的 update(Observable obs,Object obj) 方法通过 notifyObservers 接收发生变化的对象(第二个参数)(在 Observable 中)。