奇怪的NullPointerException

时间:2011-01-26 15:20:06

标签: java nullpointerexception

我有点绝望,因为我甚至不知道我有可能得到我得到的例外。

从堆栈跟踪:

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

MagnetApplicant代码:

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

成绩是枚举。如何在返回值时抛出NullPointerException?

感谢阅读!

4 个答案:

答案 0 :(得分:2)

您正在调用getGrade()方法的对象引用可能为null。具有这种方法的enum本身并不一定。

由于枚举不会被自动装箱/自动装箱并且从方法返回null很好,所以问题不在方法内。

答案 1 :(得分:1)

在这样的情况下,我看到过类似的奇怪例外:

Integer value;

public int getValue() {
  return value;
}

在这些情况下,return value可以在value为空时抛出NPE(因为自动取消装箱)。

我无法解释你的情况,不过。

答案 2 :(得分:1)

不应该发生。您是否正在使用某种框架在后台为您做一些事情?例如。 Spring AOP,hibernate等。

答案 3 :(得分:0)

调用该方法的类是否可能为null,并且编译器已优化了函数调用,以便字节码读取,实际上是:

Grade myGrade = myClass.grade;

编译器有一些棘手的事情可以解决相应的原始源的哪一行,并且可能选择了getGrade第86行。

如果应该很容易证明该类是否为空。