【发布时间】:2016-03-30 22:41:31
【问题描述】:
如果我尝试编译
for(;;)
{
}
System.out.println("End");
Java 编译器生成错误消息Unreachable statement。但是如果我添加另一个“unreachable”(根据我)break 声明并使它:
for(;;)
{
if(false) break;
}
System.out.println("End");
它编译。为什么它不会产生错误?
【问题讨论】:
-
我不明白您的编辑:无论 if... 中使用的条件如何,它都是一个无限循环...
-
@assylias 我不认为在这里简单地解决 if 是一个足够的答案,否则它会是重复的。诀窍是 if 后门使编译器认为中断可达,它展开以提供退出条件。
-
@chrylis 是的,我明白 - 我在评论中的意思是
continue不会退出任何东西...... -
@JarrodRoberson 我特别不认为这是重复的,因为这个问题涉及交互,虽然取决于特殊情况,但需要进一步分析。
-
@assylias 我补充说,因为 JLS 描述说
A break, continue, return, or throw statement cannot complete normally.。即使使用 return 也会产生错误。
标签: java if-statement unreachable-code unreachable-statement