Java泛型和数组构造

标签 java arrays generics

假设我有一个带有泛型参数 T 的泛型类,它是一个 Number 子类。我想在类构造期间初始化一个 T 数组。可能吗?如果是如何?如果不是,为什么?

public class AClass<T extends Number>{

    private T array[];
    private int arrayOfInt[];

    public AClass(int size){
        arrayOfInt = new int[size];
        array = ? //what should I put here?
    } 
} 

最佳答案

T 仅在编译时知道。它在运行时是未知的,因此您无法初始化数组的内容。无论您如何创建数组,每个值都将为 null

array = (T[]) new Number[size];

编辑:创建任何类型的实例的问题是您需要知道您想要的默认值是什么以及您想要调用哪个构造函数。例如没有 new Double()

如下所述,double[] 将比 Number[] 更高效、更快速,除非您需要较大的 long 值,否则它将能够存储所有可能的值。

关于Java泛型和数组构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7222166/

相关文章:

c# - 使协变接口(interface)向后兼容

java - 有没有 'clean' 方法来省略静态类型声明?

java - 不能将 .addKeyListener(this) 用于静态 JPanel,但需要 JPanel 保持静态 - Java

java - 如何在 Camel 进程中访问资源中的文件?

java - 如何在Java中为Android编程创建 Activity 变量的名称?

javascript - 如果 URL 在数组中则触发切换

arrays - 如何在 MATLAB 中对结构数组进行排序?

php - 从多维数组创建表

Java 通用对象初始化

java - 通用类型删除警告