Я знаю, что есть способ для написания java if statement в короткой форме
if (city.getName() != null) {
name = city.getName();
} else {
name="N/A";
}
Кто-нибудь знает, как написать короткую форму для выше 5 строк в одну строку...
Я знаю, что есть способ для написания java if statement в короткой форме
if (city.getName() != null) {
name = city.getName();
} else {
name="N/A";
}
Кто-нибудь знает, как написать короткую форму для выше 5 строк в одну строку...
Используйте тернарный оператор:
name = ((city.getName() == null) ? "N/A" : city.getName());
Я думаю, что у вас есть условия назад - если это нулевое значение, вы хотите, чтобы значение было "N/A".
Что делать, если город недействителен? В этом случае ваш код * попадает на кровать. Я бы добавил еще одну проверку:
name = ((city == null) || (city.getName() == null) ? "N/A" : city.getName());
Способ сделать это с помощью тройного оператора:
name = city.getName() == null ? city.getName() : "N/A"
Однако, я считаю, что у вас есть опечатка в вашем коде выше, и вы хотите сказать:
if (city.getName() != null) ...
Чтобы избежать вызова .getName()
дважды, я использовал бы
name = city.getName();
if (name == null) name = "N/A";
Что?: оператор в 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. Условие может быть любым выражением, которое возвращает логическое значение.
Я всегда прошу прощения, как использовать тернарный оператор ?:
. Этот дополнительный ответ - быстрое напоминание. Это сокращение от if-then-else
.
myVariable = (testCondition) ? someValue : anotherValue;
где
()
содержит if
?
означает then
:
означает else
Это то же самое, что и
if (testCondition) {
myVariable = someValue;
} else {
myVariable = anotherValue;
}
name = (city.getName() != null) ? city.getName() : "N/A";
Вы можете написать операторы 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";
}
в java 8:
name = Optional.ofNullable(city.getName()).orElse("N/A")
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
Используйте org.apache.commons.lang3.StringUtils:
name = StringUtils.defaultString(city.getName(), "N/A");
Простой и понятный:
String manType = hasMoney() ? "rich" : "poor";
длинная версия:
String manType;
if (hasMoney()) {
manType = "rich";
} else {
manType = "poor";
}
или как я его использую, чтобы быть понятным для других считывателей кода:
String manType = "poor";
if (hasMoney())
manType = "rich";
name = city.getName()!=null?city.getName():"N/A"