使用对象作为数组时出现空指针异常

时间:2012-03-02 07:57:13

标签: java java-ee

这是我的EmpData类:

package com.bank;

public class EmpData {
int id;
String name;
String date;
String pos;
String status;


public void setEmp(int id, String name, String date) {
    this.id = id;
    this.name = name;
    this.date = date;
}

public void setStat(String pos, String stat){
    this.pos = pos;
    this.status = stat;
}

public void disp(){
    System.out.println(id+" : "+name+" : "+date+" : "+pos+" : "+status);
}

}

这是我的主要班级:

package com.bank;

public class Bank {
    public static void main(String[] args) {
        EmpData[] obj = new EmpData[4];
        obj[1].setEmp(1, "Test123", "09-04-1990");
        obj[1].setStat("clerk", "on-hold");
        obj[1].disp();
    }
}

我在eclipse中没有语法错误,但是当我运行程序时,我得到以下空指针错误

线程“main”java.lang.NullPointerException中的异常     在com.bank.Bank.main(Bank.java:6)

6 个答案:

答案 0 :(得分:2)

在设置值之前,您没有初始化obj[1]

应该是

obj[1] = new EmpData();
obj[1].setEmp(1, "Test123", "09-04-1990");
obj[1].setStat("clerk", "on-hold");
obj[1].disp();

答案 1 :(得分:1)

你没有初始化obj [1],你只为EmpData分配了4个插槽,你在每个插槽上创建一个新实例。只需在创建阵列后添加:

obj[1] = new EmpData();

答案 2 :(得分:1)

创建EmpData实例,将数据设置为它,然后将其分配给所需的索引。您正尝试将值分配给NULL。

答案 3 :(得分:0)

你必须用对象填充数组,你所做的就是声明数组和它的大小。

public static void main(String[] args) {
        EmpData[] obj = new EmpData[4];
        obj[1] = new EmpData();        
        obj[1].setEmp(1, "Test123", "09-04-1990");
        obj[1].setStat("clerk", "on-hold");
        obj[1].disp();
}

答案 4 :(得分:0)

您也可以

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

用空数据初始化它们。您可以向EmpData添加构造函数,以便在创建数据时设置数据。

答案 5 :(得分:0)

您必须先创建一个新对象       EmpData [] obj = new EmpData [4];       obj [1] = new EmpData();

package com.bank;

public class Bank {
    public static void main(String[] args) {
        EmpData[] obj = new EmpData[4];
        obj[1] = new EmpData ();
        obj[1].setEmp(1, "Test123", "09-04-1990");
        obj[1].setStat("clerk", "on-hold");
        obj[1].disp();
    }
}