Я хочу проверить нулевой указатель при доступе к полем нескольких классов в глубину (в цепочке методов get). Однако, если один из ранних методов - null
, я получаю NullPointerException
в любом случае.Java NullPointerException проверка на цепные методы
Это то, что я хочу, чтобы проверить, хотя он все еще может получить NullPointerException
:
if(x.getLocation().getBuilding().getSolidFuelInd() != null)
pol.setWood_heat_ind(x.getLocation().getBuilding().getSolidFuelInd() ? "Y" : "N");
Это поведение, я хочу, приведенный выше код, чтобы показать:
if(x.getLocation() != null)
if(x.getLocation().getBuilding() != null)
if(x.getLocation().getBuilding().getSolidFuelInd() != null)
pol.setWood_heat_ind(x.getLocation().getBuilding().getSolidFuelInd() ? "Y" : "N");
Поле на Pol является необязательным, и его следует устанавливать только в том случае, если вышеуказанный геттер не является null
. Однако объекты здания и местоположения также могут быть null
, поэтому теперь я должен проверить, что они действительны.
Есть ли какой-нибудь более короткий способ проверить все выше, как я хочу?
Почему вы не прилагаете первое решение в блоке 'try catch NPE'? – Codebender
Я мог бы, но я считаю, что попытки/уловы предназначены для обработки ошибок в коде. Получение нулевого указателя не было бы атипичным поведением. – tfbbt8
Это также не намного чище, чем мой второй фрагмент кода. Я знаю, как справиться с ошибкой, я просто искал более простой и привлекательный способ сделать это. – tfbbt8