java - 如何初始化通用数组?

标签 java arrays

该方法用于将数组分割成 block reference 。我想让这个方法变得通用。

问题是,我无法像这样初始化数组。

T[][] arrays = new T[chunks][];

完整方法

 public <T> T[][] splitArray(T[] arrayToSplit, int chunkSize) {
        if (chunkSize <= 0) {
            return null;
        }
        int rest = arrayToSplit.length % chunkSize;
        int chunks = arrayToSplit.length / chunkSize + (rest > 0 ? 1 : 0);
        T[][] arrays = new T[chunks][];
        for (int i = 0; i < (rest > 0 ? chunks - 1 : chunks); i++) {
            arrays[i] = Arrays.copyOfRange(arrayToSplit, i * chunkSize, i * chunkSize + chunkSize);
        }
        if (rest > 0) {
            arrays[chunks - 1] = Arrays.copyOfRange(arrayToSplit, (chunks - 1) * chunkSize, (chunks - 1) * chunkSize + rest);
        }
        return arrays;
    }

初始化通用数组的正确方法是什么?

最佳答案

您不能使用通用参数初始化数组。 That is a restriction on generics .

解决方法是创建一个 Object[][] 并将其转换为 T[][]:

T[][] arrays = (T[][])new Object[chunks][];

关于java - 如何初始化通用数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50266224/

相关文章:

java - 如何将 sysout 和 syserr 重定向到 java 中的自定义记录器?

php - 是否总是需要在 foreach 之前使用 "is_array()"?

java - 如何将从 csv 文件读取的标记放入对象数组中

java - 使用行、列和字符的输入创建形状以填充形状时出现问题

javascript - 使用 Array.prototype.reverse() 反转数组的元素

javascript - 如何在 React 中对数组的每个元素进行切片

java - Spring Boot 部署失败,Weblogic 10.3.4.0 中出现 StackoverflowError

java - 如何在Java中对原语进行等效的通过引用传递

java - Reactjs和nodejs登录、注册模块

java - 我们如何将 log4j 消息存储到 java util 列表