#java
#java
Вопрос:
Позвольте мне начать с моего условия,
protected void populateBags(ListOfBagsType listOfBags, BagHasButtons bagHasButtons)
if (null != listOfBags amp;amp; null != listOfBags.getBags()) {
List<Bags> bags = listOfBags.getBags();
if (null != bags.get(0).getColors().getColor().get(0) amp;amp; bagsWithButtons != null amp;amp; null != bagHasButtons.getBagsWithButtons().get(0)) {
// do process
}
}
}
Мой вопрос здесь, есть ли способ присвоить значение listOfBags.getBags() переменной, если условие истинно, например
List<Bags> bags = null;
if (null != listOfBags amp;amp; (null != listOfBags.getBags() = bags))
вместо того, чтобы присвоить его в следующей строке кода? Я не уверен, как здесь использовать операторы тернери. Если это сработает, я могу использовать то же самое для следующего условия if и обработать переменные позже.
Комментарии:
1. Условный оператор (он же троичный оператор) — это именно то, что вам следует использовать здесь. Почему вы не хотите его использовать?
2. bags = listOfBags != null amp;amp; listOfBags.getBags() != null ? listOfBags.getBags() : null;
3. Не по теме, но поскольку
listOfBags
является аргументом этого метода, я бы сначала проверил его вместе с другим аргументомbagsWithButtons
, чтобы убедиться, что метод был вызван правильно, напримерif (listOfBags == null || bagsWithButtons == null) { return; }
Ответ №1:
Хотя это и менее читабельно, это именно то, для чего и предназначен тернарный оператор. ……….
List<Bags> bags = (listOfBags != null amp;amp; listOfBags.getBags() != null) ? listOfBags.getBags() : null;
Лично я бы придерживался простого if-оператора, потому что он более удобочитаемый:
List<Bags> bags = null;
if(listOfBags != null amp;amp; listOfBags.getBags() != null) {
bags = listOfBags.getBags();
}
Оба делают одно и то же.
Вы могли бы, конечно, попытаться сделать тернарный оператор более читаемым, извлекая логическое значение, представляющее условие …
boolean hasBags = listOfBags != null amp;amp; listOfBags.getBags() != null;
List<Bag> bags = hasBags? listOfBags.getBags() : null;
… но в этот момент вы могли бы также просто использовать if-оператор.
Ответ №2:
Чтобы добавить к ответу Родди, другим решением было бы:
List<Bags> bags = null != listOfBags? listOfBags.getBags(): null;
if (nbags != null)