创建实例的类的数组

时间:2012-11-24 20:55:34

标签: java arrays instance

在他的构造函数中有ObjSystem.out.println("Hello world!") ;

我使用 - Obj[] objArray = new Obj[10] ;创建了这个类的数组,没有打印,意味着 - 没有调用Obj的实例。有没有办法创建这样的数组,但有实例,除了在for循环中创建它们?

4 个答案:

答案 0 :(得分:3)

好吧,既然你想知道除了使用for循环之外的一种方法,你可以这样做: -

Obj[] objArray = {new Obj(), new Obj(), new Obj()};

这里发生的是,您正在使用数组元素直接初始化数组引用。 现在,实际数组对象的类型是从LHS上的数组引用类型推断出来的。

因此,使用该声明,将创建一个大小为3的数组(在上例中),数组中的每个索引都以给定顺序的instanceObj初始化。 / p>


我建议的更好方法是使用ArrayList,在这种情况下,您double-braces initialization无需循环即可初始化List。此外,还有一个额外的优势,您可以随时添加新元素。因为它是dynamically increasing数组。

List<Object> list = new ArrayList<Object>() {
    {
        add(new Obj());
        add(new Obj());
        add(new Obj());
    }
};  // Note the semi-colon here.

list.add(new Obj());  // Add another element here.

答案 1 :(得分:3)

到目前为止,答案很好,很有帮助。我在这里只是为了提醒你

Obj[] objArray = new Obj[10];
Arrays.fill(objArray, new Obj());

但是,这只会为数组的所有元素分配一个引用(对新的Obj())。

答案 2 :(得分:1)

执行Obj[] objArray = new Obj[10] ;时 您只创建一个引用数组以指向实际的'Obj`对象。

但在你的情况下,永远不会创建实际的Obj对象。

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

执行上述操作将打印所需的内容。

最后执行System.out.println(Arrays.deepToString(objArray))打印所有toString()

Obj

答案 3 :(得分:1)

Obj[] objArray = new Obj[10] ;只创建一个能够容纳10个Objs的数组。要将Objs放入数组,您需要使用Rohit的方法或编写一个简单的for循环来一次初始化一个数组条目:

for (int i = 0; i < 10; i++) {
    objArray[i] = new Obj();
}

或者,没有for循环:

int i = 0;
while (i < 10) {
    objArray[i] = new Obj();
    i++;
}