当前位置: 首页 > 面试题库 >

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

杜骏祥
2023-03-14
问题内容

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

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

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

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


问题答案:

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



 类似资料:
  • 我在Eclipse中尝试了以下操作: :警告“死码” while(false){}:编译错误“无法访问代码” 我想知道这种差异是否有真正的“原因”。我已经找到这个。。。 无法访问的代码编译器错误 ...但是为什么不允许用于相同的调试目的呢?

  • 我遇到了一个奇怪的问题。我正在查询数据库表中的单词列表,并能够获得该列表。但是我无法更新该表。奇怪的是,logcat显示Code 14错误。我卸载了应用程序,重新运行它,所以数据库是新复制的,但是什么都没有改变。 以下是dbHandler代码: } 这是服务代码: 字符串兽医显示在烤面包中,我可以看到表格第一列中的所有单词。但是我无法更新行。 我已经给了它存储权限,并对其进行了双重检查。 清单文件

  • 问题内容: 我不明白“无法​​访问的代码”是什么意思? 在我的代码的最后一行中,它表示无法访问的代码。 } 问题答案: 这里的循环: 解析为,因为从未修改过的值。因此,(在您的情况下)之后出现的任何代码均被视为 无法访问 。

  • 我不知道发生了什么事情。即使条件是假的,if块中的代码仍然运行。我在netbeans IDE7.4中设计了我的界面,只需在Eclipse中复制粘贴设计。以下是我的代码 无论我在jinstrument jcombobox中选择什么,我都会得到“inside if”作为输出。我已经检查了print语句,但enterloop的值为0,它仍然进入if语句块。请帮助我解决这个问题

  • 问题内容: 在此NotePadProvider示例代码中,我注意到作者选择了以下形式: 过度: 第一种形式比更具逻辑性的形式有什么优势吗? 问题答案: 除了“可读性”之外,没有。它们在功能上是等效的。 (“可读性”用引号引起来,因为我讨厌并且发现它更具可读性。但是其他人则不然。)

  • 问题内容: 有时,当您调试时,会有无法访问的代码片段。无论如何,有没有抑制警告? 问题答案: 在任何编译器上执行此操作的唯一方法是。 如果您使用的是Eclipse,请尝试。