Java - 如何在模板类的构造函数中初始化包含 T 类型项目的数组?

标签 java arrays templates constructor

搜索这个只能在 C++ 中找到答案,我已经很了解它了,但是我如何在 Java 中做到这一点?我找到的答案表明我需要执行以下操作:

class FixedArray<T> {

    public FixedArray(byte size) {
        array = new T[size];
    }

    private T[] array;
}

...但我收到错误

Type parameter 'T' cannot be instantiated directly

最佳答案

实际上T并不是任何数据类型,而只是Generics的代表,因此您需要初始化一个通用的Object[]数组并进行强制转换它为通用类型T

试试这个:

class FixedArray<T> {
public FixedArray(byte size) {
    array = (T[]) new Object[size];
}

private T[] array;
}

例如,您需要有一个整数数组,它将相当于:

Integer[] array = (Integer[]) new Object[size];

关于Java - 如何在模板类的构造函数中初始化包含 T 类型项目的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57739046/

相关文章:

python - 如何制作 python-mysqldb 模板?

java - JPA EntityGraph 如何允许在运行时选择实体图?

java - SSIS:通过 Linux 将 ispac 转换为 dtsx 或以编程方式提取文件

java - 从 Java 传递到 C 后未初始化的 JNA 结构数组

java - Eclipse 无法识别 Android 设备

C++ 显式返回类型模板特化

java - 按字母顺序对字符串数组进行排序。如何按每行中间的数字对同一数组进行排序

arrays - ANSI C,垃圾收集器和函数环境数组,退出函数会取消数组吗?

c++ - 当我的数组达到一定大小时 Qt 不工作

javascript - Ext JS 4.2.1 - renderTo 导致错误