JD.BITR

当 if 检查在两侧仅包含常量时,发生 JD.BITR。导致这种问题的原因可能是在发生程序错误后进行了编译器优化,从而将表达式替换为了常量。作为子用例,该检查器会在如下示例情况中触发意外分配。注意:该错误是否会发生,取决于 Java 编译器优化代码的方式。对于某些编译器,永远不会发生 JD.BITR,而是会发生 JD.RC.EXPR.DEAD 或 JD.RC.EXPR.CHECK。

漏洞与风险

“if”语句中的静态求值表达式最有可能是逻辑错误。

缓解与预防

修复“if”语句。

示例 1

复制
     static void check(boolean hasFields) {
         if (hasFields = true) {
             foo();
         }
         return;
     }

针对第 11 行报告 JD.BITR:表达式“hasFields = true”始终是“true”。是否有拼写错误?