странный NullPointerException - PullRequest
       1

странный NullPointerException

1 голос
/ 26 января 2011

Я несколько отчаялся, потому что даже не знаю, как это возможно, чтобы я получил Исключение, которое я получаю.

Из трассировки стека:

java.lang.NullPointerException
    at us.fl.k12.sdhc.services.dto.MagnetApplicant.getGrade(MagnetApplicant.java:86)
...

Код приложения Magnet:

84 public Grade getGrade()
85 {
86  return grade;
87 }

Оценка является Перечислением.Как создать исключение NullPointerException при простом возврате значения?

Спасибо за чтение!

Ответы [ 4 ]

2 голосов
/ 26 января 2011

Ссылка на объект , для которой вы вызываете метод getGrade (), может быть нулевой. Этот метод не обязательно должен быть указан в самом перечислении.

Так как перечисления не получают autoboxed / autounboxed и возвращение нулевого значения из метода в порядке, проблема не в методе как таковом.

1 голос
/ 26 января 2011

Этого не должно быть.Вы используете какую-то платформу, которая делает что-то для вас в фоновом режиме?Например, Spring AOP, Hibernate и т. Д.

1 голос
/ 26 января 2011

Я видел подобные странные исключения в таких случаях:

Integer value;

public int getValue() {
  return value;
}

В этих случаях return value может выдать NPE, когда value равно нулю (из-за автоматической распаковки).

Я не могу действительно объяснить ваш случай, '

0 голосов
/ 26 января 2011

Возможно ли, что класс, для которого вызывается метод, имеет значение null, и что компилятор оптимизировал вызов функции, так что байт-код считывает, по сути:

Grade myGrade = myClass.grade;

В компиляторе есть несколько хитрых вещей, позволяющих определить, какой строке исходного кода соответствует строка, и, возможно, выбрал строку 86 getGrade.

Если должно быть легко доказать, является ли класс нулевым или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...