e.getCategory() != null ? e.getCategory().getName() : "";
Это бросает NullPointerException
, и я не понимаю, почему. Может ли кто-нибудь объяснить?Почему это бросает NullPointerException?
e.getCategory() != null ? e.getCategory().getName() : "";
Это бросает NullPointerException
, и я не понимаю, почему. Может ли кто-нибудь объяснить?Почему это бросает NullPointerException?
Согласно правилам старшинства Java, ваш код был разбираемый, как это:
(("\"category\":" + "\"" + e.getCategory()) != null) ? e.getCategory().getName() : ""
со всей конкатенации (("..." + e.getCategory())
!= null
) в качестве условия.
С "..." + e.getCategory()
никогда не было null
, код не работал.
e
является
null
.
это не null !! – GorillaApe
(e.getCategory()! = Null) возвращает false или true и никогда не выдает исключение – GorillaApe
** Тогда возникает проблема внутри 'getName()'. ** – SLaks
e
null null?
Может быть, вы должны попробовать это:
(e != null) ?
(e.getCategory() != null) ?
e.getCategory().getName() :
""
: ""
или, скорее, упрощенную форму:
(e != null && e.getCategory() != null) ?
e.getCategory().getName() :
""
Существует причина, если существуют утверждения ... 'if (e! = null && e.getCategory()! = null && ...) ...' –
Но триниальные выражения являются funner ! :-) – amphetamachine
решение найдено ....
ПРАВИЛЬНО
bufo.append("\"category\":" + "\"" + ((e.getCategory() != null) ? e.getCategory().getName() : "") + "\",");
ПРОБЛЕМА
bufo.append("\"category\":" + "\"" + e.getCategory()!=null?e.getCategory().getName():"" + "\",");
Кажется, что ему нужно() по какой-то причине – GorillaApe
Ему нужно(), потому что в противном случае вы проверите строку «category»: «null вместо проверки фактической ссылки, которая равна NULL. Компилятор предположил, что вы проверяете результат конкатенации строк. –
Это делает случай, что иногда проще упростить выражение с помощью временной переменной. Даже если вы знаете, что правила приоритета оператора холодны, следующая бедная слэб, читающая ваш код, может не ... –
Пожалуйста, разместите полную трассировку стека вашего NullPointerException. Это должно помочь точно определить, где проблема. –
Просто подсказка: на Java обычно считается хорошей практикой размещать пространство по обе стороны от большинства операторов, таких как '! =', '?' И ':'. Это делает код более понятным. – Syntactic
спасибо за подсказку – GorillaApe