在Java中使用条件本身将if条件的值分配给if变量

时间:2019-03-06 20:33:18

标签: java

让我从我的状况开始,

 protected void populateBags(ListOfBagsType listOfBags, BagHasButtons bagHasButtons)
      if (null != listOfBags && null != listOfBags.getBags()) {
          List<Bags> bags = listOfBags.getBags();
            if (null != bags.get(0).getColors().getColor().get(0) && bagsWithButtons != null && null != bagHasButtons.getBagsWithButtons().get(0)) {
             // do process
        }
    }
}

我的问题在这里,如果条件为真,有没有办法将 listOfBags.getBags()的值分配给变量,例如

 List<Bags> bags = null;
 if (null != listOfBags && (null != listOfBags.getBags() = bags))

而不是在下一行代码中分配它?我不确定如何在这里使用实习生操作员。如果可行,我可以将其用于下一个if条件,并稍后处理变量。

2 个答案:

答案 0 :(得分:2)

虽然可读性较差,但这恰恰是三元运算符用于 的原因。

List<Bags> bags = (listOfBags != null && listOfBags.getBags() != null) ? listOfBags.getBags() : null;

我个人会坚持使用简单的if语句,因为它更具可读性:

List<Bags> bags = null;
if(listOfBags != null && listOfBags.getBags() != null) {
  bags = listOfBags.getBags();
}

两者都做同样的事情。


当然,您可以尝试通过提取表示条件...的布尔值来使三元运算符更具可读性。

boolean hasBags = listOfBags != null && listOfBags.getBags() != null;
List<Bag> bags = hasBags? listOfBags.getBags() : null;

...但是那一点您最好也使用if语句。

答案 1 :(得分:0)

要添加到Roddy的答案中,另一种解决方案是:

List<Bags> bags = null != listOfBags? listOfBags.getBags(): null;
if (nbags != null)