繁体   English   中英

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

[英]How should I initialize an array of classes with a default (parameterless) constructor in 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-不用担心,我确实使用了明智的变量名!)

您要么必须一次将它们写出来,要么必须使用循环:

MyClass[] myArray = new MyClass[n];
for (int i = 0; i < myArray.length; ++i) {
    myArray[i] = new MyClass();
}
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;
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM