我有这个代码,它给我一个错误,“无法创建一个通用数组 BST_Node“
BST_Node<Integer>[] arrayTree = new BST_Node<Integer>[treeSize];
我不知道为什么,因为我有
Integer[] arrayTree = new Integer[treeSize];
它完美无缺。为什么它不能创建具有泛型类型的固定大小数组,这是正确的方法吗?
答案 0 :(得分:6)
BST_Node<Integer>[] arrayTree = (BST_Node<Integer>[]) new BST_Node[treeSize];
您在运行时不知道类型参数,因此您无法创建通用数组,只能创建rawtype-array。
答案 1 :(得分:2)
数组不是通用的。这就是为什么在编译和运行时检查数组的原因,其中集合可以是通用的,只在编译期间检查它。所以当你声明泛型数组时,你必须这样做:
BST_Node<Integer>[] arrayTree = (BST_Node<Integer>[]) new BST_Node[treeSize];