Подскажите пожалуйста, как можно озвучить данное условие if()
if (name == null ? !name.equals(human.name) : human.name != null) return false;
Мое предположение: Если name пуст, то если name не равно human.name ...дальше мысль теряется. Иначе если name не пустой, то если human.name не пустой ... та же ерунда мысль не улавливаю. При каком из вышеперечисленных и совпадающих условий return false;?
То, что в скобках:
Если name == null, вычисляется "!name.equals(human.name)"
Если нет, вычисляется "human.name != null"
Оба выражения возвращают тип boolean.
Ну и выражение за скобками: если (найденный boolean == true) вернуть false.
Вообще, в таким случаях надо по шагам преобразовывать код:
if (name == null ? !name.equals(human.name) : human.name != null) return false;
1 шаг: выделяем boolean
boolean flag = name == null ? !name.equals(human.name) : human.name != null;
if (flag) {
return false;
}
2 шаг: превращаем оператор ?: в просто if
boolean flag;
if(name == null) {
flag = !name.equals(human.name);
// null.equals(human.name); - выкинет NullPointerException
} else {
flag = human.name != null;
}
if (flag) {
return false;
}
3 шаг: учитывая NullPointerException при !name.equals(human.name); код будет равным такому:
if(name == null) {
throw new NullPointerException();
}
if (human.name != null) {
return false;
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники