我用 java 编写了自己的 2-3-4 树。目前,我的代码如下所示:
public class tree234{
private class node{
Comparable data[]=new Comparable[3];
node next[]=new node[4];
}
}
相反,我想要这样的东西:
public class tree234<T extends Comparable<? super T>>{
private class node{
T[] data=new T[3];//error here!
node[] next=new node[4];
}
}
虽然我知道我无法创建数组(并且有点理解为什么),但我想不出一个相当简单的方法来使用泛型实现节点类。有什么建议吗?
最佳答案
您始终可以进行显式转换...
由于 T 扩展了 Comparable,变量 T[] 将在编译后的类中作为 Comparable[] 结束。所以数组类型必须是 Comparable[]
- 您不能将 Object
对象分配给 Comparable
变量,.
另一种数组类型是Tree234.Node[]
。
public class Tree234<T extends Comparable<? super T>>{
private class Node{
T[] data=(T[]) new Comparable[3]; // need to be a comparable, as the superclass is known.
Node[] next = (Node[]) new Tree234.Node[4];
}
}
关于java - 使用泛型在 Java 中实现 B 树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6890580/