Intellij条件在达到警告时始终为假

时间:2019-08-23 14:43:18

标签: java intellij-idea

我有以下代码,

我有一个枚举和一个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;
}

如何解决警告?

3 个答案:

答案 0 :(得分:2)

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;
}

答案 1 :(得分:2)

如果enumCodenull,则条件enumCode != EnumCode.Closed为true。 因此第二个if条件包括第三个条件。

您应该检查它是否与EnumCode.Closed不同,并且它是否不为空。

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

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

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

答案 2 :(得分:0)

从逻辑上讲,一旦达到第3个if条件,可变数量就不会等于null,因此 null!=数量将导致 false 。其次, null == enumCode 也会导致 false ,因为您已经在第二个 if语句中对其进行了验证。此外,在您的第二条if语句中,当说 null!= EnumCode.Closed; 时,条件为true的可能值包括 {null,open,没有} 。这意味着您无需再次使用 null == enumCode 进行检查,因为无论如何它都是假的。根据布尔代数, false && false为false 。要解决此问题,只需删除第三个if,因为它们包含在您以前的if中。

ExchangeService service = new ExchangeService();
service.Url = new Uri("https://mail.domain.com/EWS/Exchange.asmx");
service.Credentials = new WebCredentials(username, password);

EmailMessage message;
message = new EmailMessage(service);
message.From = sender;
message.ToRecipients.Add(recipient);
message.Subject = "Hello world! as the subject";
message.Body = new MessageBody(BodyType.HTML, "<p><b>Hello World!</b> as the HTML Body</p>");

// How to set the alternative body/view