繁体   English   中英

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

[英]How to create a fixed size array of a generic type in Java?

我有这段代码,该错误提示我“无法创建BST_Node的通用数组”

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

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

    Integer[] arrayTree = new Integer[treeSize];

而且效果很好。 为什么它不能用泛型创建固定大小的数组,正确的方法是什么?

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

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

在此处此处查看详细说明

数组不是通用的。 这就是为什么在编译以及运行时都检查数组的原因,因为Collections可以是通用的,并且仅在编译时才对其进行检查。 因此,当您声明通用数组时,您必须这样做:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM