我在某些 enum
类型上有一个 switch case,具体取决于我要创建的数组。
它看起来像:
switch (type) {
case BOOLEAN:
Boolean[] booleans = new Boolean[];
case STRING:
String[] strings = new String[];
}
我想知道是否可以将其提取到某种方法中,这样它的工作原理如下:
ArrayWrapper arrayWrapper = // some logic for which I am looking for
然后我有一个接受任何类型数组的通用方法,我想像这样调用它
method(arrayWrapper.getArray());
它将被转换为特定类型并由特定类型处理器处理?
最佳答案
Java Generics与 Reflection API 结合可以用来获取 T[]
的实例:
@SuppressWarnings("unchecked")
public static <T> T[] createArrayInstance(Class<T> clazz, int size) {
return (T[])Array.newInstance(clazz, size);
}
如果您出于任何原因想要在结果数组中存储一个值:
@SuppressWarnings("unchecked")
public static <T> T[] createArrayInstance(T obj) {
T[] a = (T[])Array.newInstance(obj.getClass(), 1);//or whatever size you want
a[0] = obj;
return a;
}
关于java - 根据条件创建特定类型的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55061995/