“独立”标签声明是否有目的?

时间:2013-12-11 12:34:35

标签: java break

我能够编译并运行以下代码片段,但我不能再添加任何代码,以便使用带标签的语句。因此,我是否正确地认为这种陈述没有合理用途? (Java允许我这样做,这就是我问的原因。)

statement: System.out.print("This represents a \'standalone\' statement.");

另外,我正在学习Java,并且发现(仅仅是为了一些“微不足道的乐趣”)Java允许以下代码片段编译好。

labelID: System.out.println("Label identifiers are allowed to be - ");
labelID: System.out.println("the same.");

// Labels can be "chained together", and you can "break out of" any of them.
label1:
label2:
label3: break label1;  // Can be break label1, 2, or 3.

// Labels can be associated with "null statements"
label: {}
label: ;

2 个答案:

答案 0 :(得分:1)

经典的例子是:

outer: while (...) {
    inner: while (...) {
        if (...) break outer;
    }
}

从编译器前端(词法分析器/解析器)的角度来看,我想让它们在任何地方都比较容易。不是任何实际的东西。一旦有人发布了令人印象深刻的反例,我会删除我的答案:)

答案 1 :(得分:1)

我的猜测是,这是对使用goto和标签的Java标准化控制流的一些历史意图的回忆,这些标记尚未达到Java的公开发布。

我正在考虑将此问题与goto关键字结合使用,该关键字仍在Java中保留,但没有包含它的有效语法。