在另一个类中使用class作为数组

时间:2014-01-29 15:58:55

标签: java arrays class

我正在尝试执行以下操作

1 - 我需要创建一个这样的类

public class base {
    int a;
    String b;
    public base() {
      a = 0;
      b = "";
    }
}

2 - 我需要创建一个创建“base”数组的类并设置一些值

public class arrayBase {
    public base[] ab = new base[2];    
    public arrayBase() {  
       ab[0].a = 1;
       ab[0].b = "test1";
       ab[1].a = 2;
       ab[1].b = "test2";       
    }
}

3 - 我需要在另一个类

中使用“arrayBase”
public class test{
    public static void main(String[] args) {
       arrayBase p = new arrayBase();
       System.out.println(p.ab[0].a);
    }
}

当我尝试这个时它会出错

Exception in thread "main" java.lang.NullPointerException.

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

问题在于这一行:

 public base[] ab = new base[2]; 

这里你只是为两个基础对象保留堆空间,但你仍然需要创建它们并将它们分配给正确的数组单元格,如下所示:

  public class arrayBase{
    public base[] ab = new base[2];    
    public arrayBase() {  
       ab[0] = new base();
       ab[0].a = 1;
       ab[0].b = "test1";

       ab[1] = new base();
       ab[1].a = 2;
       ab[1].b = "test2";       
    }
  }

请将您的课程命名为Base,而不是base

答案 1 :(得分:1)

有关建议,

  public class arrayBase{
  public base[] ab = new base[2];    
  public arrayBase() {  
     ab[0] = new base();
     ab[1] = new base();
     ab[0].a = 1;
     ab[0].b = "test1";
     ab[1].a = 2;
     ab[1].b = "test2";       
    }
  }

需要对类库进行初始化,同时请记住,如果基类由于默认的受保护修饰符而位于同一个包中,则只能更改变量a和b。

答案 2 :(得分:1)

修改arraBase构造函数如下所示。问题是,ab数组中没有对象,但是,您尝试访问已声明对象的字段。首先,您需要使用声明的对象填充arra,然后为这些对象的字段分配值。并且,修复编译错误

public arrayBase() {  
     ab[0] = new base();
     ab[1] = new base()
     ab[0].a = 1;
     ab[0].b = "test1";
     ab[1].a = 2;
     ab[1].b = "test2";       
    }