我一直认为标签只能与循环一起使用,但似乎没有。给出这样的代码:

public class LabelTest {
    public static void main(String[] args) {
        label1: System.out.println("");
        label2: LabelTest t = new LabelTest();
    }
}

当编译的行标记为“label1”时,会编译,但“label2”处的代码会给出错误。为什么?为什么我要标记不是“循环”的语句?

最佳答案

由于标签不能应用于变量声明而导致错误,这就是the language grammar的定义方式(标签只能位于Statement之前,而LocalVariableDeclarationStatement并非Statement)。原因可能是它可能导致变量范围困惑。这有效:

    label1: System.out.println("");
    label2: { LabelTest t = new LabelTest(); }

09-11 18:41