我在 Eclipse 中尝试了以下操作:
if (false) {}
:警告“死代码”while (false) {}
: 编译错误'无法访问的代码'
我想知道这种差异是否存在真正的“原因”。这个我已经找到了...
Unreachable code compiler error
...但是为什么不允许 while (false)
用于相同的调试目的?
最佳答案
JLS section on unreachable code解释了理由。本质上,Java 通常不应该使用条件编译,就像 C 通常使用 #ifdef
所做的那样,但是在某些情况下(例如调试,特别是向后二进制兼容性)允许编译器完全去除代码是必需的,因此允许特定构造 if(false)
用于该目的。
关于java - if(false) vs. while(false) : unreachable code vs. 死代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20299914/