Java,对象数组

时间:2011-04-01 12:43:30

标签: java

这是一个微不足道的问题,但是我的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);       
    }
}

5 个答案:

答案 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}]