我应该如何使用Java中的默认(无参数)构造函数初始化类数组?

时间:2011-12-22 21:45:36

标签: java

如何使用空构造函数初始化类数组?

我可以看到,如果我使用构造函数,我会这样做 -

MyClass[] myArray = new MyClass[] {
    new MyClass(1),
    new MyClass(2),
    new MyClass(3)
};

但是使用空构造函数我不知道该怎么做。

MyClass[] myArray = new MyClass[] {
    new MyClass(),
    new MyClass(),
    new MyClass()
};

这就是我现在所拥有的,但它似乎非常低效 - 有更好的方法吗?

(我在示例中将其称为MyClass / myArray以获取可读性 - 不用担心,我确实使用了合理的变量名称!)

2 个答案:

答案 0 :(得分:6)

您要么必须一次写出一个,要么必须使用循环:

MyClass[] myArray = new MyClass[n];
for (int i = 0; i < myArray.length; ++i) {
    myArray[i] = new MyClass();
}

答案 1 :(得分:0)

public static <T> T[] getArray(final Class<? extends T> memberclass, final int numberOfItems) {

    final T[] array = new T[numberOfItems];
    final Constructor constr = memberclass.getConstructor(null);
    for (int index = 0; index < numberOfItems; index++) {
        array[index] = constr.newInstance(null);
    }

    return array;
}

这将是您可以用于此目的的通用方法的粗略草案。当然,我跳过了所有异常处理,所以这种方法实际上会膨胀一些。