Java исключение нулевого указателя после проверки, если ноль

1

Может кто-нибудь объяснить, как возможно, что я получаю исключение из null-указателя, выведенное из этой строки кода:

if (data != null && data.isActive()) {

Тело метода isActive() справедливо:

public Boolean isActive() 
{
  return active;
}

Спасибо заранее.

  • 1
    Возможно ли, что NPE выбрасывается внутри или method() ?
  • 6
    Отредактируйте ваш вопрос и добавьте метод () источник
Показать ещё 12 комментариев
Теги:

1 ответ

14
Лучший ответ

В java есть вещь под названием autoboxing, когда примитивные значения обертываются типами объектов и наоборот.

Итак, в вашем коде есть метод:

public Boolean isActive() 
{
  return active;
}

обратите внимание, что вы возвращаете Boolean (тип объекта), а не Boolean (примитивный тип).

и возвращаемое значение будет использоваться в вашем операторе if.

if (data != null && data.isActive()) {

когда java встречает data.isActive() в вашем выражении if, он пытается преобразовать значение Boolean в примитивное логическое значение, чтобы применить его для вашей логической операции.

Но ваша переменная active внутри вашего метода isActive() равна null, поэтому java не может удалить эту переменную до Boolean примитивного значения, и вы получите Null pointer exception.

  • 6
    кто бы ни отрицал мой ответ, пожалуйста, оставьте комментарий, чтобы сообщить мне, что не так с моими предположениями. Спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню