我想创建一个对数组执行不同方法的类(数组)。到目前为止,我得到的是针对不同类型的数组(int,字符串等)的重载构造函数。但是,该类还需要创建一个类数组,那么如何传递一个类名并让Array类创建该类的数组?
我可以为要创建数组的类进行硬编码,但我想使Array类具有足够的通用性,以便将来与我创建的任何类一起使用。
答案 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.
}