这是一个微不足道的问题,但是我的Java生锈了,让我感到难过;我得到一个空指针异常。根据下面的代码我可能会做的很明显 - 但我会解释......
我需要一个对象数组,我不想创建另一个文件。对于这个琐碎的项目,我不想要吸气剂和制定者。我已经看到了一个类似于下面的示例,该示例使用基于位于另一个类内部的类的链接列表。但是,我比链接列表更精通数组,所以我想使用数组。
public class Ztest {
Stuff[] st = new Stuff[2];
public Ztest(){
}
class Stuff{
public String x;
public boolean y;
public Stuff(){}
}
public static void main(String args[]){
Ztest test = new Ztest();
test.st[0].x = "hello";
test.st[0].y = true;
test.st[1].x = "world";
test.st[1].y = false;
System.out.println(test.st[0].x);
System.out.println(test.st[0].y);
System.out.println(test.st[1].x);
System.out.println(test.st[1].y);
}
}
答案 0 :(得分:3)
您需要先为st[0]
和st[1]
指定一个值:
test.st[0] = new Stuff();
test.st[1] = new Stuff();
答案 1 :(得分:2)
Java为新数组中的对象值分配null。在使用之前,您需要test.st[0] = new Stuff()
之类的东西。
答案 2 :(得分:2)
您需要test.st[0]=new Stuff();
等,因为Stuff[] st = new Stuff[2];
创建了一个数组,但元素(引用)仍为空。
就C / C ++而言,这将是Stuff** st = new Stuff*[2];
,即st是指向Stuff
个实例的指针数组,而指针仍然指向什么。
答案 3 :(得分:1)
你需要将一个Stuff实例放入test.st [0]和test.st [1]。
答案 4 :(得分:0)
如果您想使用列表,可以尝试此操作。
static class Stuff {
public String x;
public boolean y;
// generated by my IDE.
Stuff(String x, boolean y) {
this.x = x;
this.y = y;
}
// generated by my IDE.
public String toString() {
return "Stuff{" + "x='" + x + '\'' + ", y=" + y + '}';
}
}
public static void main(String args[]) {
List<Stuff> list = new ArrayList<Stuff>();
list.add(new Stuff("hello", true));
list.add(new Stuff("world", false));
System.out.println(list);
}
打印
[Stuff{x='hello', y=true}, Stuff{x='world', y=false}]