我有以下代码,

我有一个枚举和一个BigInteger变量。请找到使用的条件

public enum EnumCode {
        Open,
        Closed,
        None
    }

private boolean TEST(final ConstraintValidatorContext constraintValidatorContext, final BigInteger amount, final EnumCode enumCode) {
    if (enumCode == EnumCode.Closed && null == amount) {
        //error message1
        return false;
    }

    if (enumCode != EnumCode.Closed && null != amount) {
        //error message2
        return false;
    }

    if (null == enumCode && null != amount) { //**Condition is always false when reached**
        //error message3
        return false;
    }
    return true;
}


如何解决警告?

最佳答案

if (enumCode == EnumCode.Closed && null == amount) {
    return false;
}

if (enumCode != EnumCode.Closed && null != amount) {
    return false;
}


如果为enumCode == null,则为enumCode != EnumCode.Closed。因此,这:

if (null == enumCode && null != amount) {
    return false;
}


没有先前的条件为真,就永远不会为真。

要解决此问题,请删除最终的if语句,因为它是多余的。



顺便说一句,您可以只使用一个if语句来编写它:

if ((enumCode == EnumCode.Closed) == (null == amount)) {
  return false;
}

10-01 22:43