0

Swingのワーカースレッドを使用して何かを返す必要がありますか?戻り値がない場合はどうなりますか?ワーカースレッドを使用して無限ループを実行したいだけです...では、何を返すのでしょうか?そして、無限ループの後にダミーのreturnステートメントを書いたとしても、たとえばreturn 0; 次に、おそらく「コードに到達できません」と表示されます。

4

3 に答える 3

3

まだ試したことがないのではないかと思います。コメントで提案したコードは正常に機能するはずです。

public Object construct() {
  for (;;) {
    Node.execution();
    Clock.incrementTimeTick();
    System.out.println(Clock.getTimeInTick());
    repaint();
  }
  // End of loop is unreachable, so no need for a return statement.
}

このようなタイトなループは私には悪い考えのように思えます。repaint()コードは適切にスレッドセーフにする必要がありますが、コンパイルする必要があります...

個人的にwhile (true)は「永遠の」ループを使用することを好みますが、for (;;)機能するはずです。

于 2011-07-04T14:05:23.067 に答える
2

としてワーカーを実装し、SwingWorker<Void, SomeObject>戻るだけnullです。無限ループについてコンパイラをだまします。実行時に常にを返すメソッドに依存するようにしますtrue

于 2011-07-04T13:54:44.980 に答える
1

次のようなメソッドは、コンパイルエラーなしでコンパイルされます。

public Object foo() {
    for (;;) {
        // do something ... or nothing
    }
}

その理由は、 JLS 14.21forで設定されているルールに従って、ループに続くステートメントに到達できないためです。具体的には

  1. for条件式(または値を持つコンパイル時定数式である条件式)のないループは、「true正常に完了する」ことができません。

  2. 正常に完了できないステートメントが前にあるブロック内のステートメントは、到達不能です。

于 2011-07-04T14:33:31.437 に答える