【问题标题】:NPE is being thrown on a static class reference, why and how?NPE 被抛出静态类引用,为什么以及如何?
【发布时间】:2013-06-02 02:47:48
【问题描述】:

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

    public static Initialize INIT = new Initialize();

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

我可以做些什么来解决我最初的错误 StackOverflow 并避免 NPE?

【问题讨论】:

  • 构造函数的代码是什么?注意:public static 变量应该至少也是final
  • 请向我们展示带有回溯的完整异常。
  • 什么@PM77-1,以及在您访问Initialize.INIT 的地方显示使用代码示例。试着让它最终化,看看你是否能重现这个问题。

标签: java static


【解决方案1】:

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

怎么可能?毕竟你将它初始化为一个新对象,而new 运算符永远不会返回null

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 2012-09-11
    • 1970-01-01
    • 2010-10-10
    相关资源
    最近更新 更多