Swingのワーカースレッドを使用して何かを返す必要がありますか?戻り値がない場合はどうなりますか?ワーカースレッドを使用して無限ループを実行したいだけです...では、何を返すのでしょうか?そして、無限ループの後にダミーのreturnステートメントを書いたとしても、たとえばreturn 0; 次に、おそらく「コードに到達できません」と表示されます。
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
で設定されているルールに従って、ループに続くステートメントに到達できないためです。具体的には
for
条件式(または値を持つコンパイル時定数式である条件式)のないループは、「true
正常に完了する」ことができません。正常に完了できないステートメントが前にあるブロック内のステートメントは、到達不能です。
于 2011-07-04T14:33:31.437 に答える