可能打破其他班级?

0 java label break

我最近重新发现了使用打破标签.现在我想知道是否有可能从另一个班级回到标签.

我想要的例子:

Main.class

label:
for (Product p : ProductList) {
 if (p.getSet() == true) {
  classHandler();
 }
}
Run Code Online (Sandbox Code Playgroud)

Classhandler.class

someFunction() {
 break label;
}
Run Code Online (Sandbox Code Playgroud)

当我输入这个时,我实际上尝试在我的Main班级中创建一个本地函数(所以我可以调用该函数)但是即使在那里我也得到了undefined label: label错误.

Joa*_*uer 5

不,你不能.你不应该.

如果破坏的条件是一些问题,那么抛出异常将是正确的方法.

否则你应该做一些事情,比如返回一个标志,指示是否仍然应该处理其他产品并对你的循环做出反应.

当你发现你甚至不能break过法,边界,这是一个很好的事情.break并且continue是强大的工具,但如果以错误的方式使用,很容易使代码混乱.例如,break隐藏在巨大代码块中的内容很容易被遗漏,但如果您continue在方法的最顶层使用a 来跳过基于某些条件的迭代,那么意图非常明确.