1

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

我有一个名为 Vectors 的类和一个名为 set_components() 的函数我尝试做的是创建一个对象数组,如下所示:

Vectors[] vec = new Vectors[2];

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

vec[0].set_components();

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

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

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

3 回答 3

5

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

for (int i = 0; i < vectors.length; i++) {
  vectors[i] = new Vector();
}
于 2013-02-19T03:29:42.333 回答
3

每一个都Vectors应该被初始化

像这样:

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

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

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

于 2013-02-19T03:30:07.413 回答
0

Java 对象从不作为表达式、变量、参数或数组元素出现。如果它不是原语,则它是参考。引用要么是空的,要么是指向对象的指针。

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

于 2013-02-19T03:33:22.983 回答