Задать вопрос
mitaichik
@mitaichik

Есть ли в java оператор аналогичный ?: в php?

Друзья , в php есть оператор ?:

$x = obj.getStr1() ?: obj.getStr2()

Смысл его в том, что если obj.getStr1() вернет null , то в $x запишеться результат obj.getStr2()
Есть ли что то такое в Java?
  • Вопрос задан
  • 216 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
rukbrook
@rukbrook
можно написать так используя тернарный оператор:
x = obj.getStr1() == null ? obj.getStr2() : obj.getStr1()

либо так используя Optional:
x = Optional.ofNullable(obj.getStr1()).orElse(obj.getStr2())
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@My1Name
Именно в java оператора "?" - нет. Есть в шаблонизаторе Thymeleaf для работы с (html) фреймворком Spring. Называют оператор Элвиса
<td th:text="${teacher.additionalSkills} ?: 'UNKNOWN'" />

В Java знак вопроса иногда ставится в качестве параметра для коллекций (массивов) с заранее неизвестным типом данных. Например: List <?> В Spring этот условный оператор мало чем отличается от if/else, и лично я ни разу его не использовал.
Ответ написан
xez
@xez Куратор тега Java
TL Junior Roo
Только так:
var x = Objects.isNull(obj.getStr1()) ? obj.getStr2() : obj.getStr1();
Ответ написан
Комментировать
libalex
@libalex
Backend / Android Developer (Java, Kotlin)
В Java есть только длинный вариант — тернарный оператор:
var x = obj.getStr1() == null ? obj.getStr2() : obj.getStr1();

А вот его короткой версии, о которой вы говорите (так называемый Элвис-оператор), в Java, увы, нет.
В Kotlin, например, — наоборот — есть Элвис-оператор, но нет тернарного, что мне тоже не очень нравится, даже при том, что Kotlin "как бы" null safety язык.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы