有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

共 (2) 个答案

  1. # 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的对象转换为基本布尔值

  2. # 2 楼答案

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

    如果value1false,则表示返回true,如果value1true,则表示返回!value2

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