如何在Java中创建泛型类型的固定大小数组?

时间:2014-01-17 03:58:10

标签: java arrays generics

我有这个代码,它给我一个错误,“无法创建一个通用数组  BST_Node“

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

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

    Integer[] arrayTree = new Integer[treeSize];

它完美无缺。为什么它不能创建具有泛型类型的固定大小数组,这是正确的方法吗?

2 个答案:

答案 0 :(得分:6)

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

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

查看全面的解释herehere

答案 1 :(得分:2)

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

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