4

オブザーバーを実装するクラスがあります。もちろん、更新関数が必要です。

public void update(Observable obs, Object obj);

誰かが2つのパラメータが何を表すのか説明できますか?もちろん、Observableは私のobservableですが、このObservable obsオブジェクトを介して監視可能なフィールドにアクセスするにはどうすればよいですか?そして、Object objとは何ですか?

4

3 に答える 3

7

他の誰かがその 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);
        }
    }
}
于 2014-11-12T18:21:29.430 に答える
5

obsメソッドを拡張Observableして持つオブジェクトです。拡張するオブジェクトにnotifyObserversキャストして、必要なメソッドを呼び出すことができます。 に渡すことができるオプションのパラメータです。obsObservableobjnotifyObservers

于 2012-12-16T12:41:11.743 に答える
3

オブザーバーの update(Observable obs,Object obj) メソッドは、notifyObservers を介して、(Observable で) 変更されたオブジェクト (2 番目のパラメーター) を受け取ります。

于 2012-12-16T12:42:21.180 に答える