Присваивать значение из условия if переменной, если оно истинно, с помощью самого условия in в Java

#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)