Java:对象数组不像非数组对象那样工作

时间:2014-07-29 12:58:00

标签: java arrays object jframe

我正在使用JGrasp编写程序,其中tile是一个类。以下代码编译:

        tile ext = new tile();
        ext.assignValues(0);
        g.setColor(ext.color);
        g.fillRect(10+20, 35+20, 20, 20);

但以下情况并非如此:

        tile[][] ext = new tile[1][1];
        ext[0][0].assignValues(0);
        g.setColor(ext[0][0].color);
        g.fillRect(10+20, 35+20, 20, 20);

我是否错误地初始化2D数组,或者我误解了数组是如何工作的。

2 个答案:

答案 0 :(得分:4)

ext[0][0]未初始化为tile[][] ext = new tile[1][1];instances of tile的数组(Object在一般术语中)但您必须初始化存储在数组索引处的每个对象,然后才能将这些对象用作这里的每个元素的默认值都是null

tile ext[0][0]= new tile(); //Have to initialize it first 
//And than use it in your code

我认为在编译期间你不会遇到任何问题,但是当你执行试图操纵NullPointerException值的代码时它会抛出null

答案 1 :(得分:3)

您已初始化数组ext[][],但尚未初始化位置tile中的[0][0]。因此它是空的,并且尝试调用方法就像访问null值的方法一样。

tile[][] ext = new tile[1][1];
ext[0][0] = new tile();
ext[0][0].assignValues(0);
g.setColor(ext[0][0].color);
g.fillRect(10+20, 35+20, 20, 20);