3

私が必要としているものを正確に実行する、swt チームによるコード スニペットがあります。ただし、別のクラスに分離したい部分、特にインラインのもの全体があります。私の以前の質問への回答として、スレッド化されたオブジェクトを実装するためにCallableを使用する必要があることが提案されました。なんらかのリターンが必要なので、runnable またはより良い callable の実装を利用することをお勧めします。

しかし、私はそれを取得しません。私の問題は次のとおりです。

  1. 元のコードでは、メソッド run のインライン実装内で、いくつかの親オブジェクトが呼び出されます。スレッドが分離されたときにこれを行うにはどうすればよいですか? C'tor のパラメーターを介してオブジェクトを渡しますか?
  2. 元のコードでは、別の実行可能なオブジェクトが実行可能な実装内にネストされています。それは何のために良いですか?コードを分離したときにこれを実装する方法は? さらに、このネストされたランナブルは、メイン メソッドによって作成されたオブジェクトを再度呼び出します。

私を憐れんでください、しかし私はまだかなりの初心者であり、私の脳は崩壊寸前です :-( 私が望むのは、すべてのスレッド化されたものを別のクラスに分離し、プログラムが既に行っているのとまったく同じことを行うことです.助けてください!

有用な提案、ヒント、例などをお寄せいただきありがとうございます...

レグミー

4

1 に答える 1

1

Java の内部の非静的クラスは、親インスタンス (非静的メソッドの場合) と、コンストラクターで必要なすべての最終的なローカル変数 (およびメソッド パラメーター) を受け取ります。このアプローチは自分で実装できます。これは大規模なクラスでは問題ありません。

すべての UI はメイン スレッドで実行する必要があります。そのため、ネストされたRunnableオブジェクトが使用されます。それはイベントキューに追加されdisplay.syncExec、メインスレッドはいつかそれを抽出し、そのrunメソッドを実行します。ここで別のクラスを作成する場合は、コンストラクターまたはsetXXXメソッドを介してパラメーターを渡す必要があります。

于 2010-03-14T09:36:27.237 に答える