创建一个对象数组

时间:2012-09-07 21:36:13

标签: java arrays

我有一个名为ElementInfo

的班级
public class ElementInfo {

    public String name;
    public String symbol;
    public double mass;

}

然后我尝试创建一个ElementInfo数组,如下所示:

ElementInfo e[] = new ElementInfo[2];

e[0].symbol = "H";
e[0].name = "Hydrogen";
e[0].mass = 1.008;

//...

别告诉我,我必须为班级的每个实例调用new

我可以这样做:

ElementInfo e[] = new ElementInfo[100];
for(ElementInfo element: e){
    e = new ElementInfo();
}

8 个答案:

答案 0 :(得分:3)

您必须为班级的每个元素调用new。

public class ElementInfo {

    private String name;
    private String symbol;
    private double mass;

    public String get_name() { return name; }
    public String get_symbol() { return symbol; }
    public double get_mass() { return mass; }

    public ElementInfo(name, symbol, mass) {
        this.name = name;
        this.symbol = symbol;
        this.mass = mass;
    }
}

然后像这样创建它们:

e[0] = new ElementInfo("H", "Hydrogen", 1.008);

答案 1 :(得分:3)

  

别告诉我,我必须为班级的每个实例打电话给新人!

完全。

您刚刚创建了一个空数组。

答案 2 :(得分:3)

ElementInfo e[] = new ElementInfo[2];

e[0] = new ElementInfo();
e[0].symbol = 'H'; ...

答案 3 :(得分:3)

您必须为每个元素创建一个新实例,但这并不难:

ElementInfo e[] = new ElementInfo[2];
for (int i = 0; i < e.length; i++)
    e[i] = new ElementInfo();

答案 4 :(得分:2)

是的,你必须这样做。

创建数组时,只需为实际对象的引用创建空间。最初值为null

要引用对象,请执行分配

e[0] = new ElementInfo();

ElementInfo a = new ElementInfo();
....
e[0] = a;

放松,打字将成为程序员的最后一个问题:-D

答案 5 :(得分:1)

通过声明一个数组,该数组类型的实例不会自动填充数组。

e[0] = new ElementInfo();

您还可以使用for循环轻松地在每个索引处实例化对象。

for (int i = 0; i < e.length; i++) {
    e[i] = new ElementInfo();
}

答案 6 :(得分:1)

是。现在它是一个包含ElementInfo对象的数组,但每个索引都为空。

为什么不创建一个接受参数的构造函数。然后

ElementInfo [] elements = {new ElementInfo("H", "Hydrogen", 1.008), new ElementInfo("C", ....)};

答案 7 :(得分:0)

ElementInfo e[] = new ElementInfo[100]; 
for(ElementInfo element: e){ 
    e = new ElementInfo(); 
}

您不能这样做,因为e是一个数组类型变量,这意味着您无法为其指定类型为ElementInfo的对象的引用。 e = new ElementInfo();就是我指的。

查看answer by Dalmus