改善状况检查

时间:2017-12-08 02:52:45

标签: java java-8

在以下情况中需要最佳方法,

我列出了源,目标,是/否等属性,如下所示:

Example: 
source ,  destination , Yes/No
abc, bcd, Yes
abd, gdc, Yes

在java中我可以使用像

这样的条件
if(Obj.getSource().equals("abc")) {
   if(Obj.getDest().equals("bcd")) { 
      return true;
   }
}

if(Obj.getSource().equals("abd")) {
   if(Obj.getDest().equals("gdc")) { 
      return true;
   }
}

通过这种方式,我可以处理上述情况,根据结果是,我可以处理我的业务逻辑。

但我的方法是两次检查,代码行冗长, 请建议我在java7或java8中的好方法。

1 个答案:

答案 0 :(得分:0)

您可以使用逻辑运算符将所有四个条件合并为一个。例如,使用逻辑和 &&逻辑或 ||。它可能看起来像:

if ((first && second) || (third && fourth)) {
    return true;
}

或者用所有条件替换:

if ((Obj.getSource().equals("abc") && Obj.getDest().equals("bcd"))
        || (Obj.getSource().equals("abd") && Obj.getDest().equals("gdc"))) {
    return true;
}

请注意,您可以在变量中记住Obj.getSource()Obj.getDest()的结果,以便通过使用该变量来节省一些性能并使条件更具可读性。

如果您在其他情况下return false;,您甚至可以完全忽略整个if,因为您可以在评估条件后直接返回boolean结果(它评估为truefalse,无需返回truefalse硬编码:

return (first && second) || (third && fourth);