创建数组对象

时间:2014-08-12 06:56:14

标签: groovy

我有两个这样的课程:

class test1{
      String var1;
      String var2;
      String var3;
      String var4;
      arrayX[] array; 

      public void create(int size){
             arrayX[] array = new arrayX[size]
      }
}   

class test2{
      String var5;
      String var6;
}

然后我有两种方法:

void firstMeth(){
    test1[] test1obj = new test1[5];
    for(int q = 0 ; q <= 5 ; q++){
    test1obj[q - 1] = new test1();
    }
}
void secondMeth(){
     test1obj[0].create(5);
     test1obj[0].array[0].var5 = "Hello";
     test1obj[0].array[1].var5 = "Super";
     test1obj[0].array[3].var5 = "night";
}

问题在于方法&#34; secondMeth&#34;因为当我尝试作出例如:     test1obj [0] .array [0] .var5 =&#34;你好&#34 ;;

我收到错误:无法在null对象上调用methos getAt()。 你知道我做错了什么吗?我应该改变什么?

提前致谢!

1 个答案:

答案 0 :(得分:3)

  public void create(int size) {
         arrayX[] array = new arrayX[size];
  }

这将创建一个本地数组,而不是在对象级别初始化该数组。要更正它,请使用

  public void create(int size) {
         this.array = new arrayX[size];
  }

编辑:要解决第二个问题,在Java中创建数组不会将每个元素都填充为对象。与C ++不同,Java中的对象数组只是一个指针数组。您需要将每个数组元素初始化为一个对象,如下所示:

  public void create(int size) {
         this.array = new arrayX[size];
         for (int i = 0; i < this.array.length; i++) {
             this.array[i] = new test2();
         }
  }

Java的默认访问级别也是“包”,不公开。因此,如果您的调用类与您的类不在同一个包中,则可能需要定义var5和var6 public。