先从我的情况说起, 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 回答
侃侃无极
TA贡献2051条经验 获得超10个赞
虽然可读性较差,但这正是三元运算符的用途。
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 语句。
狐的传说
TA贡献1804条经验 获得超3个赞
为了补充罗迪的答案,另一种解决方案是:
List<Bags> bags = null != listOfBags? listOfBags.getBags(): null; if (nbags != null)
添加回答
举报
0/150
提交
取消
