如何初始化数组对象

How to initialize an array object

为什么我在运行时遇到错误:

Exception in thread "main" java.lang.NullPointerException at arrayTest.main(arrayTest.java:5)

源码如下:

public class arrayTest{
    int b;
    public static void main(String[] args){
        arrayTest[] a= new arrayTest[2];
        a[0].b=10;
        System.out.println(a[0].b);
    }
}

谢谢 苏尼尔

您尚未向阵列添加任何 arrayTest 个实例。您只初始化了数组,所以 arrayTest[0]null。将对象添加到数组:

arrayTest[0] = new arrayTest();
arrayTest[1] = new arrayTest();

在进行面向对象编程 (OOP) 时,您需要换个角度思考。

这里您正在做的是从 class arrayTest 创建一个新的对象 arrayTest。

这个对象需要一个构造函数和属性字段,以便可以很好地定义它,例如:一个人的大小、年龄或眼睛颜色。

您希望您的对象是什么?

例如,我想做一个相同类型的 n 对象的 ArrayList : 首先,我的字段将成为一个 ArrayList,因为这是我想要创建的。

我有以下 class :

import java.lang.reflect.Type;
import java.util.ArrayList;

class arrayTestType {
    private final ArrayList arrayTest;
}

我的构造函数 return 应该做什么?

嗯,有 n 个元素的 Type 类型的数组是 ArrayList<Type>(n) 所以我的构造函数应该这样写:

public arrayTestType(Type type, int length) {
    arrayTest = new ArrayList<Type>(length);
}

最后我们的 class 是:

import java.lang.reflect.Type;
import java.util.ArrayList;

class arrayTestType {
    private final ArrayList arrayTest;

    public arrayTestType(Type type, int length){
        arrayTest = new ArrayList<Type>(length);
    }
}

现在我们要打电话的时候:

arrayTestType stringArrayOfLength5 = new arrayTestType<String>(5);

我们将得到一个明确定义的对象。 现在您需要添加一些东西以使其不为空,因此为空指针! 祝你好运!