オブザーバーを実装するクラスがあります。もちろん、更新関数が必要です。
public void update(Observable obs, Object obj);
誰かが2つのパラメータが何を表すのか説明できますか?もちろん、Observableは私のobservableですが、このObservable obsオブジェクトを介して監視可能なフィールドにアクセスするにはどうすればよいですか?そして、Object objとは何ですか?
オブザーバーを実装するクラスがあります。もちろん、更新関数が必要です。
public void update(Observable obs, Object obj);
誰かが2つのパラメータが何を表すのか説明できますか?もちろん、Observableは私のobservableですが、このObservable obsオブジェクトを介して監視可能なフィールドにアクセスするにはどうすればよいですか?そして、Object objとは何ですか?
他の誰かがその 2 番目のパラメーターを送信する方法を理解するのに苦労している場合、Nick が指摘するように、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 で) 変更されたオブジェクト (2 番目のパラメーター) を受け取ります。