我如何传入一个类以组成一个类数组?

时间:2019-07-29 21:14:14

标签: java arrays class

我想创建一个对数组执行不同方法的类(数组)。到目前为止,我得到的是针对不同类型的数组(int,字符串等)的重载构造函数。但是,该类还需要创建一个类数组,那么如何传递一个类名并让Array类创建该类的数组?

我可以为要创建数组的类进行硬编码,但我想使Array类具有足够的通用性,以便将来与我创建的任何类一起使用。

2 个答案:

答案 0 :(得分:3)

您可以执行以下操作:

public class Array<T> {
    private final T[] arr;

    public Array(final int size, final Class<T> clazz) {
        this.arr = createArray(size, clazz);
    }

    private T[] createArray(final int size, final Class<T> clazz) {
        return (T[]) java.lang.reflect.Array.newInstance(clazz, size);
    }
}

您可以使用以下方法调用实例化

final Array<String> strings = new Array<>(5, String.class);

我还建议为您的类使用其他名称,因为Java API已使用Array

答案 1 :(得分:0)

正如@andresp所说,您可以使用数组作为私有字段来创建一个新类。除了类型参数之外,避免必须传递Class<T>作为参数的另一种选择是将数组替换为java.util.ArrayList,其功能就像具有一些差异的数组一样。

例如:

public class MyArray {
    private final java.util.ArrayList arr;
    public MyArray(java.util.ArrayList arr) {
        this.arr = arr;
    }

    // Add your additional methods here.
}