java如何解决SonarQube中的主要问题“不必要地将布尔常量装箱”
我在我的项目中使用了这种方法:
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
# 1 楼答案
这意味着您应该执行以下操作之一:
a.将返回类型更改为布尔对象类型。这将进一步取决于您如何处理
Boolean
类型的对象b、 将返回值从
return value1 ? !value2 : Boolean.TRUE;
更改为return value1 ? !value2 : true;
或return value1 ? !value2 : !value1;
这可以进一步简化。如果我看一下返回值表,我会看到:
这意味着它相当于
return !(value1 & value2)
这是因为在返回值时,您将把类型为
Boolean
的对象转换为基本布尔值# 2 楼答案
那:
return value1 ? !value2 : Boolean.TRUE;
如果
value1
是false
,则表示返回true
,如果value1
是true
,则表示返回!value2
它可以简化为:
return !value1 || !value2;
,并且不使用布尔包装