一直試圖找到這對於沒有運氣過去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();'如果是這樣的話,那麼你的類型轉換總是無效的。 –