可以在for循环之外适当地使用java标签吗?

Jay*_*ith 3 java label for-loop

所以我已经看到很多情况,其中标签被用于for循环,特别是双嵌套循环.

这是唯一可以使用它们的情况吗?还是有其他我不知道的常见用途.我觉得它是一个我从未使用过的java工具!

Ray*_*oal 5

可以说,标记循环是唯一可以使用标记语句的有用方法.

不允许标注任何声明在Java中,但他们使用的唯一途径是作为(标记)的目标breakcontinue声明.

通常的建议适用:只是因为你可以做某事并不意味着你应该这样做.不要使用标签作为有趣的"评论"(是的,我已经看到这样做).不要写双重嵌套循环只是为了展示你打破或继续外循环的能力.这些天我们倾向于支持适用于整个序列的操作,减少对标记breaks和continues的一些用途.与往常一样,旨在提高可读性和简洁性.也就是说,输出 Java源代码的解析器生成器等工具很可能会大量使用带标签的语句,即使人类程序员很少这样做.


Cir*_*四事件 5

标记为break 和 continue本质上是 goto 语句。

来自/sf/answers/446128371/:转发转到:

label: {
  // do stuff
  if (check) break label;
  // do more stuff
}
Run Code Online (Sandbox Code Playgroud)

向后跳转

label: do {
  // do stuff
  if (check) continue label;
  // do more stuff
  break label;
} while(true);
Run Code Online (Sandbox Code Playgroud)

因此,这个问题归结为关于 goto 语句何时合法的永无休止的争论,例如:C 或 C++ 中良好 goto 的示例,以及上面的向后 goto 习惯用法甚至比直接 GOTO 更丑陋的事实。