获得nullpointerexception,为什么

时间:2013-03-03 03:35:38

标签: java nullpointerexception

宣称:

private Man[] man;  

这是初始化:

Man[] man = new Man[1];

    for (int i = 0; i < 1; i++){
        man[i] = new Man();
            for (int j = 0; j < 3; j++){
                man[i].eatThis(table.foods[table.topFood-1]);
                table.topFood--;
            }
    }

想要打印出来:

System.out.println(getMan(0));

转到:

public Man getMan(int k){
 return man[k];
}

但我收到NullPointerException。为什么?虽然:

System.out.println(man[0]);

工作正常。

它返回:

Man = (bread, meat, cheese)

以下是例外:

Exception in thread "main" java.lang.NullPointerException
at ManRunning.getMan(ManRunning.java:80)
at ManRunning.newGame(ManRunning.java:133)
at ManRunning.<init>(ManRunning.java:57)
at RunDevilRun.main(RunDevilRun.java:9)

1 个答案:

答案 0 :(得分:3)

听起来你实际上正在使用局部变量man 阴影类成员man。初始化时

Man[] man = new Man[1];

这声明了一个新变量。允许与类成员同名的局部变量,它们将隐藏(也称为阴影)类级别变量。因此,虽然看起来您正在初始化man,但实际上您正在初始化本地数组而不是触及类中的数组。要初始化它而不是声明一个新的,你只想说:

man = new Man[1];