0
...

SwingWorker<Boolean, Void> worker = new SwingWorker<Boolean, Void>(){
String a = "a";

    getA() {
         return a;
    }

    protected boolean doInBackground() throws Exception{
        return true;
    }
}

worker.getA();

worker.execute;

...

上記のコードは機能していません。getA() (最後の行の前の行で呼び出された場合) が SwingWorker に対して未定義であることがわかります。

しかし、SwingWorker を別のクラスにすると、問題なく動作します。私はこれがどのように機能するかを理解していないかもしれません (おそらく理解していません) が、SwingWorker を匿名の内部クラスにすることで、その中でカスタムメソッドを呼び出せなくなる理由がわかりません...

これは良い考えですか、それとも別のクラスにする必要がありますか? SwingWorker を他の場所で使用するつもりはありません。

4

1 に答える 1

3

これは SwingWorker 自体とは何の関係もなく、親クラスのオーバーライドではない匿名の内部クラスのメソッドを呼び出そうとしていることとすべて関係があります。これは実行できないため、これを実行しようとしないでください。解決策は、匿名の内部クラスを使用するのではなく、プライベートな内部クラスまたはスタンドアロンの外部クラスを使用することです。たとえば、以前の質問で私がすでに投稿したクラスを参照してください。

于 2013-03-30T14:49:31.747 に答える