NPE被抛在静态类引用上,为什么以及如何?

时间:2013-06-02 02:47:49

标签: java static

我创建了一个Initialize类来避免大量不需要的对象。为了使用这个对象,我创建了一个它的实例:

    public static Initialize INIT = new Initialize();

每当我使用“Initialize.INIT”时,我会在“Initialize”处获得一个NullPointer。

如何解决原始错误StackOverflow并避免使用NPE?

1 个答案:

答案 0 :(得分:1)

NPE的原因是在您尝试使用INIT的值为null

怎么会这样?毕竟,您将其初始化为新对象,new运算符永远不会返回null

最可能的解释是某些内容正在将null分配给INIT。您应该可以通过将字段声明为final来避免这种情况。

(也有可能你有一些代码在初始化之前查看INIT的值。这只会在你为其他一些类执行静态初始化代码时发生,并且这个类的静态与另一个的静态之间的依赖循环。)