我是否总是必须在 Swing 中使用 Worker Thread 返回一些东西?如果我没有任何返回值怎么办?我只是想使用工作线程来运行一个无限的for循环......那么返回什么?即使我在无限for循环之后写了一个虚拟的return语句,比如for return 0; 然后它也可能会说“代码无法访问”。
问问题
249 次
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
将 worker 实现为SwingWorker<Void, SomeObject>
并返回null
。欺骗编译器关于无限循环。使其取决于运行时中始终返回的某些方法true
。
于 2011-07-04T13:54:44.980 回答
1
像下面这样的方法将在没有任何编译错误的情况下编译:
public Object foo() {
for (;;) {
// do something ... or nothing
}
}
原因是循环后面的任何语句for
都是不可达的,根据JLS 14.21中规定的规则。具体来说
任何
for
没有条件表达式的循环(或作为带有 value 的编译时常量表达式的条件表达式true
)都不能“正常完成”。块中前面有无法正常完成的语句的任何语句都是不可达的。
于 2011-07-04T14:33:31.437 回答