我正在尝试将 AVLTree 实现转换为堆样式数组,但在泛型方面遇到了一些问题:
public class MyAVLTree<K extends Comparable<? super K>, E> implements
OrderedDictionary<K, E> {
class AVLNode implements Locator<K, E>{
// ...
}
// ....
public Locator<K,E> [] toBSTArray() {
AVLNode[] bArray = new AVLNode[size];
makeArray(root, 0, bArray); // recursion
return bArray;
}
}
在行AVLNode[] bArray = new AVLNode[size];
我收到以下错误:
“无法创建 MyAVLTree.AVLNode 的通用数组”
我不明白我做错了什么。有什么帮助吗?
内部类从外部类捕获类型变量,因此这就是您收到错误的原因。
如果你想实例化一个原始的AVLNode[]
您可以将类名限定为原始名称MyAVLTree
:
// vvvvvvvvv
AVLNode[] bArray = new MyAVLTree.AVLNode[size];
您将收到警告,就像您通常创建原始数组类型一样;但是这会编译。被告知平常的事情与原始类型一起出现如果您不知道它们,尽管您当然无法在 Java 中实例化非原始数组。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)