如何解决SonarQube中的主要问题“不必要地装一个布尔常量”

时间:2019-10-02 09:33:58

标签: java sonarqube boolean boolean-expression boolean-operations

我的项目中有这种方法:

private static boolean isNAND(boolean value1, boolean value2) {
        return value1 ? !value2 : Boolean.TRUE;
}

但是我在SonarQube中遇到了这个主要问题,我不知道如何解决:

Method io.clouding.bendiciones.buenas.noches.Operador.isNAND(boolean, boolean) needlessly boxes a boolean constant

2 个答案:

答案 0 :(得分:1)

这意味着您应该执行以下操作:

a。将返回类型更改为布尔对象类型。这将进一步取决于您对类型为Boolean的对象的处理方式。
b。将返回值从return value1 ? !value2 : Boolean.TRUE;更改为return value1 ? !value2 : true;return value1 ? !value2 : !value1;

这可以进一步简化。如果我看一下返回值表,那么我会看到:

value1 value2 result
T        F     T
F        T     T
T        T     F
F        F     T

这意味着它等同于return !(value1 & value2)

这是因为在返回值时,您要将类型Boolean的对象转换为原始布尔值。

答案 1 :(得分:0)

那个:return value1 ? !value2 : Boolean.TRUE;

如果truevalue1则返回false,如果!value2value1则返回true

它可以简化为:return !value1 || !value2;,并且不使用布尔包装。