让我从我的状况开始,
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条件,并稍后处理变量。
答案 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)