java - 根据条件创建特定类型的数组

标签 java java-8 java-stream

我在某些 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 GenericsReflection 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;
}

另请参阅:How to create a generic array in Java?

关于java - 根据条件创建特定类型的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55061995/

相关文章:

java - 从 lambda 表达式中的方法返回值

Java 8 混淆 -> String::compareToIgnoreCase

java - 使用 Java Streams 使用通用标准从给定列表中过滤对象

java - 填充所有状态值的摘要计数

java - 使用 Java Stream 计算项目列表中日期的出现次数

java jlist - AbstractListModel - fireContentsChanged 无法正常工作

java - 使用批量短信网站无法在手机上发送短信

java - 已读和未读图书申请

java - 使用 java 流从列表创建 map 列表

java - JAXB eclipse 错误 : There's no JAXB 2. 2 API 在类路径中