JD.LIST.ADD

当在容器上执行运算(如 addAll、removeAll、retainAll 或 containsAll),但参数是容器本身时,发生 JD.LIST.ADD。这肯定是拼写错误。

漏洞与风险

这不是其本身的错误,但因其没有意义,因此存在逻辑错误。例如,程序员写入的是 con1.addAll(con1),而不是 con1.addAll(con2)。这种错误的严重程度取决于使用代码的位置和方式。

缓解与预防

修复方法参数的名称,或者可以将 removeAll 替换为 list.clean()。

示例 1

复制
     private Collection foo(Collection list12_3,
                            Collection list12_4) {
         if (list12_3.size() < list12_4.size()) {
             list12_3.addAll(list12_4);
             return list12_3;
         } else {
             list12_4.addAll(list12_4);
             return list12_4;
         }
 
     }

针对第 17 行的 addAll 调用报告 JD.LIST.ADD:容器 list12_4 调用 addAll,其中参数是其本身。该代码什么也没做,或者有更简单的方法来实现。可能是拼写错误。