我正在尝试执行以下操作
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.
我该如何解决这个问题?
答案 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";
}