Java 如何解决SonarQube中的主要问题;不必要地将布尔常量“装箱”;

Java 如何解决SonarQube中的主要问题;不必要地将布尔常量“装箱”;,java,sonarqube,boolean,boolean-expression,boolean-operations,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) needles

我在我的项目中使用了这种方法:

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

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

a。将返回类型更改为布尔对象类型。这将进一步取决于您对类型为
Boolean

B从
返回值1更改返回值!值2:Boolean.TRUE
返回值1!价值2:正确
返回值1!价值2:!价值1

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

value1 value2 result
T        F     T
F        T     T
T        T     F
F        F     T
这意味着它相当于
返回!(值1和值2)


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

即:
返回值1!值2:Boolean.TRUE

如果
value1
false
则表示返回
true
,返回
!值2
如果
value1
true


它可以简化为:
return!值1 | |!价值2并且它不使用布尔包装器

我想这是因为Boolean.TRUE返回的是布尔值而不是布尔值。尝试返回true而不是Boolean.TRUEtrue,但是我会得到一个“删除文字”true布尔值。true,但是我会得到一个“删除文字”true布尔值。那么最好将其更改为
返回值1!价值2:!价值1