我一直认为标签只能与循环一起使用,但似乎没有。给出这样的代码:
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(); }