一直试图找到这对于没有运气过去3小时直接的答案/解决方案,希望你们能帮助:泛型和向下转换(JAVA)
我有实现使用的间隔树下面的类二叉搜索树:
public class Node<T extends Comparable<T>> implements Comparable<Node<T>> {...}
public class BinarySearchTree<T extends Comparable<T>> {
protected Node<T> root;
...}
public class IntervalNode extends Node<Interval> {...}
public class IntervalTree extends BinarySearchTree<Interval> {...}
当我尝试IntervalTree的一个实例的根成员以下投我得到一个ClassCastException:
IntervalNode CurrentNode = (IntervalNode)root; //root being of type Node<Interval>
which IntervalNode extends.
我是相当新到java,但从我读过的和谷歌搜索这应该是可能的,所以我有点失去了这种例外的原因。我迄今为止的最佳猜测是,这是由类型删除引起的,但我一直无法找到关于此问题的直接答案。任何关于这个例外或更好的解决办法的想法?
从你的代码中,每个'IntervalNode'都是'Node',但'Node'可能是'IntervalNode'(不是每一个)。当你在你的树中插入一个项目时,它会是一个'Node',可能做的事情就像'if(root == null)root = new Node();'如果是这样的话,那么你的类型转换总是无效的。 –