一尘不染

if(false)vs.while(false):无法访问的代码与死代码

java

我在Eclipse中尝试了以下方法:

  • if (false) {}:警告“死代码”
  • while (false) {}:编译错误“无法访问的代码”

我想知道这种差异是否存在真正的“原因”。我已经找到了…

…但是为什么不允许while (false)相同的调试目的?


阅读 381

收藏
2020-09-08

共1个答案

一尘不染

上可达代码JLS部分解释了理由。本质上,Java通常不应该像C常规那样使用条件编译#ifdef,但是在某些情况下(例如调试,尤其是向后二进制兼容性),需要允许编译器完全剥离代码,因此特定的结构if(false)为此被允许。

2020-09-08