Краткая форма для оператора Java If

Я знаю, что есть способ для написания java if statement в короткой форме

if (city.getName() != null) {
    name = city.getName();
} else {
    name="N/A";
}

Кто-нибудь знает, как написать короткую форму для выше 5 строк в одну строку...

Ответ 1

Используйте тернарный оператор:

name = ((city.getName() == null) ? "N/A" : city.getName());

Я думаю, что у вас есть условия назад - если это нулевое значение, вы хотите, чтобы значение было "N/A".

Что делать, если город недействителен? В этом случае ваш код * попадает на кровать. Я бы добавил еще одну проверку:

name = ((city == null) || (city.getName() == null) ? "N/A" : city.getName());

Ответ 2

Способ сделать это с помощью тройного оператора:

name = city.getName() == null ? city.getName() : "N/A"

Однако, я считаю, что у вас есть опечатка в вашем коде выше, и вы хотите сказать:

if (city.getName() != null) ...

Ответ 3

Чтобы избежать вызова .getName() дважды, я использовал бы

name = city.getName();
if (name == null) name = "N/A";

Ответ 4

Что?: оператор в Java

В Java вы можете написать:

if (a > b) {
  max = a;
}
else {
  max = b;
}

Установка одной переменной в одно из двух состояний на основе одного условия является таким распространенным использованием if-else, что для него был создан ярлык, условный оператор,?:. Используя условный оператор, вы можете переписать приведенный выше пример в одной строке следующим образом:

max = (a > b) ? a : b;

(a > b)? a: b; это выражение, которое возвращает одно из двух значений: a или b. Проверено условие (a > b). Если это правда, возвращается первое значение a. Если оно ложно, возвращается второе значение b. Какое бы значение не возвращалось, зависит от условного теста a > b. Условие может быть любым выражением, которое возвращает логическое значение.

Ответ 5

Я всегда прошу прощения, как использовать тернарный оператор ?: . Этот дополнительный ответ - быстрое напоминание. Это сокращение от if-then-else.

myVariable = (testCondition) ? someValue : anotherValue;

где

  • () содержит if
  • ? означает then
  • : означает else

Это то же самое, что и

if (testCondition) {
    myVariable = someValue;
} else {
    myVariable = anotherValue;
}

Ответ 6

name = (city.getName() != null) ? city.getName() : "N/A";

Ответ 7

Вы можете написать операторы if, else if, else в краткой форме. Например:

Boolean isCapital = city.isCapital(); //Object Boolean (not boolean)
String isCapitalName = isCapital == null ? "" : isCapital ? "Capital" : "City";      

Это краткая форма:

Boolean isCapital = city.isCapital();
String isCapitalName;
if(isCapital == null) {
    isCapitalName = "";
} else if(isCapital) {
    isCapitalName = "Capital";
} else {
    isCapitalName = "City";
}

Ответ 8

в java 8:

name = Optional.ofNullable(city.getName()).orElse("N/A")

Ответ 9

name = ( (city.getName() == null)? "N/A" : city.getName() );

во-первых, проверяется условие (city.getName() == null). Если да, то "N/A" присваивается имя или просто name="N/A", иначе ему присваивается значение из city.getName(), т.е. name=city.getName().

Что посмотреть здесь:

  • условие находится в скобках, за которыми следует знак вопроса. Вот почему я пишу (city.getName() == null)?. Здесь знак вопроса сразу после условия. Легко видеть/читать/угадывать даже!
  • Значение слева от двоеточия (:) и значение справа от двоеточия (a) значение слева от двоеточия назначается, когда условие истинно, иначе право переменной двоеточия назначается переменной.

здесь ссылка: http://www.cafeaulait.org/course/week2/43.html

Ответ 10

Используйте org.apache.commons.lang3.StringUtils:

name = StringUtils.defaultString(city.getName(), "N/A");

Ответ 11

Простой и понятный:

String manType = hasMoney() ? "rich" : "poor";

длинная версия:

      String manType;
    if (hasMoney()) {
        manType = "rich";
    } else {
        manType = "poor";
    }

или как я его использую, чтобы быть понятным для других считывателей кода:

 String manType = "poor";
    if (hasMoney())
        manType = "rich";

Ответ 12

name = city.getName()!=null?city.getName():"N/A"