java 1.6 中的未知结构

Unknown structure in java 1.6

我正在处理一个遗留项目,我发现了类似的东西:

test:{
        if(1 == 1) {
            System.out.println("Oups");
            break test;
        }
        System.out.println("Hello World");
    }

我google它,但似乎没有什么符合这种结构的。

当然这部分代码编译&运行 ... ????

有人知道那是做什么的吗?

正如评论所说,这是一个 break 可以跳转到/跳出的标签。此处有更多信息:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html

test: 称为标签。就像在循环中一样,break 跳转到块的末尾。标签用于定义中断跳转到的位置。请注意,范围的开始并不重要,前提是结束是您需要它的地方,所以实际上您标记的是结束而不是要中断的代码的开始。

虽然它有效,但标签通常会与 if 语句混淆,部分原因是它们很少使用,所以我会避免使用它们。如果你可以写一些带有标签的东西,你通常可以不使用方法来写它,或者在这种情况下使用 elseif

如果可以的话,即使使用带循环的标签也应该避免。

自 1.0 版以来,这已成为 Java 的一部分,并且在 Java 10 中仍受支持。

叫做label

它与 break 一起使用,在其他语言中执行类似于 goto 的操作。

您可以找到更多详细信息here

Jump-out 标签 (Tutorial):

label: for (int i = 0; i < x; i++) {
    for (int j = 0; j < i; j++) {
        if (something(i, j)) break label; // jumps out of the i loop
    }
} 
// i.e. jumps to here