如何在类中正确实例化公共类+数据结构,以便其他对象可以使用它?

时间:2014-01-08 05:36:40

标签: java constructor null nullpointerexception

在我的代码中,我有一个单独的Runner类来实例化一个World,它有一个4x4的Locations数组(一个单独的类)存储为Location [] []数组。当我打印/尝试使用Location数组时,它的值为null,并抛出NullPointerException。

public class Runner 
{
public static void main(String[] args)
{
...
WumpusWorld test_loc = new WumpusWorld();
System.out.print(test_loc) //This prints an ID for the WumpusWorld object
System.out.print(test_loc.world) //Null value prints here
//I'd like to pass the test_loc.world values to an actor here
...
}
}

WumpusWorld的适用代码如下:

public class WumpusWorld 
{
public Location[][] world;
public WumpusWorld()
{
    new WumpusWorld((byte) 4); //this constructor is used
}
...
public WumpusWorld(byte size)
{
this.world = new Location[size][size];
for(byte i = 0; i<size; i++)
{
    for(byte j = 0;j<size;j++)
    {
    world[i][j] = new Location(j,i,true,false,false);
    }
    //Location instances called in the form world[x][y]
    //are error free in constructor
...
}
}

1 个答案:

答案 0 :(得分:1)

您的问题可能与您从默认构造函数中调用public WumpusWorld(byte size)的方式有关。

试试这个:

public WumpusWorld()
{
    this((byte) 4);
}

在调用中new,我在内部类

中有未初始化的值