为什么在运行时出现错误:
arrayTest.main(arrayTest.java:5)处的线程“主”中的异常java.lang.NullPointerException
源代码如下:
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);
}
}
谢谢 苏尼尔
答案 0 :(得分:1)
您尚未向阵列添加任何arrayTest
实例。您仅初始化了数组,因此arrayTest[0]
是null
。要将对象添加到数组:
arrayTest[0] = new arrayTest();
arrayTest[1] = new arrayTest();
答案 1 :(得分:1)
在进行面向对象编程(OOP)时,您需要有所不同。
您正在做的是从arrayTest类创建一个新的对象arrayTest。
该对象需要一个构造函数和作为属性的字段,因此可以很好地进行定义,例如:人的大小,年龄或眼睛的颜色。
您想让对象成为什么?
例如,我想做一个n
对象的ArrayList,它是相同类型的:
首先,我的字段将是ArrayList,因为这就是我要创建的内容。
我有以下课程:
import java.lang.reflect.Type;
import java.util.ArrayList;
class arrayTestType {
private final ArrayList arrayTest;
}
我的构造函数应该返回什么?
那么,具有n个元素的Type类型数组是ArrayList<Type>(n)
所以我的构造函数应该这样写:
public arrayTestType(Type type, int length) {
arrayTest = new ArrayList<Type>(length);
}
所以最后我们的课是:
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);
我们将获得一个定义明确的对象。 现在,您需要添加一些东西,以使其不为null,因此为null指针! 祝你好运!