【问题标题】:Java object ArrayJava 对象数组
【发布时间】:2013-02-19 03:28:32
【问题描述】:

我是 Java 新手,在处理对象数组时遇到了麻烦,答案可能很简单,但我看不到。

我有一个名为 Vectors 的类和一个名为 set_components() 的函数 我尝试做的是创建一个这样的对象数组:

Vectors[] vec = new Vectors[2];

//然后像这样访问函数:

vec[0].set_components();

但是我收到此错误:线程“main”java.lang.NullPointerException 中的异常 这是为什么呢?

如果我只对一个对象执行此操作,它会起作用。

Vector vec = new Vector();
vec.set_components();

【问题讨论】:

    标签: java arrays object


    【解决方案1】:

    您的数组已构建,但没有填充任何内容,引用为空。如果您在用实例填充数组之前尝试使用数组中的项目,您将得到如您所见的 NPE。将对象数组想象成一个蛋箱。您必须先用鸡蛋(矢量对象)填充它,然后才能使用它们制作煎蛋。这通常是通过 for 循环完成的。

    for (int i = 0; i < vectors.length; i++) {
      vectors[i] = new Vector();
    }
    

    【讨论】:

    • @MarioFuentes:很高兴它有帮助!
    【解决方案2】:

    每个Vectors 都应该被初始化

    像这样:

    for(int i = 0; i < vec.length; i++){
        vec[i] = new Vector();
    }
    

    Vectors[] vec = new Vectors[2] 行创建 2 个“Vectors”引用,而不是“Vectors”对象。

    每个人最初都引用null。然后,当您尝试使用vec[0].set_components(); 引用null 引用vec[0] 时,JVM 会说“等等,vec[0] 指向null。我无法取消引用它.. 让我来只需抛出一个名为 NullPointerException 的异常"

    【讨论】:

      【解决方案3】:

      Java 对象永远不会以表达式、变量、参数或数组元素的形式出现。如果它不是原语,则它是参考。引用要么是 null,要么是指向对象的指针。

      您创建了一个空引用数组。您需要更改数组的每个元素,使其成为指向 Vectors 对象的指针:vec[0] = new Vectors(); 或类似的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-01
        • 2015-06-20
        相关资源
        最近更新 更多