0

我是否总是必须在 Swing 中使用 Worker Thread 返回一些东西?如果我没有任何返回值怎么办?我只是想使用工作线程来运行一个无限的for循环......那么返回什么?即使我在无限for循环之后写了一个虚拟的return语句,比如for 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

将 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中规定的规则。具体来说

  1. 任何for没有条件表达式的循环(或作为带有 value 的编译时常量表达式的条件表达式true)都不能“正常完成”。

  2. 块中前面有无法正常完成的语句的任何语句都是不可达的。

于 2011-07-04T14:33:31.437 回答