【问题标题】:How to create a fixed size array of a generic type in Java?如何在 Java 中创建一个固定大小的泛型数组?
【发布时间】:2014-01-17 03:58:09
【问题描述】:

我有这段代码,它给了我“无法创建通用数组 BST_Node"

    BST_Node<Integer>[] arrayTree = new BST_Node<Integer>[treeSize];

我不知道为什么,因为我有

    Integer[] arrayTree = new Integer[treeSize];

而且效果很好。为什么它无法创建具有泛型类型的固定大小的数组,这样做的正确方法是什么?

【问题讨论】:

标签: java arrays generics


【解决方案1】:
BST_Node<Integer>[] arrayTree = (BST_Node<Integer>[]) new BST_Node[treeSize];

您在运行时不知道类型参数,因此您无法创建泛型数组,而只能创建 rawtype-array。

查看综合解释herehere

【讨论】:

    【解决方案2】:

    数组不是通用的。这就是为什么在编译期间和运行时检查数组的原因,其中集合可以是通用的,并且仅在编译时检查。所以当你声明泛型数组时,你必须这样做:

    BST_Node<Integer>[] arrayTree = (BST_Node<Integer>[]) new BST_Node[treeSize]; 
    

    【讨论】:

      猜你喜欢
      • 2022-01-02
      相关资源
      最近更新 更多