2015-03-02 237 views
0

我構建了一個類AbstractTree並創建了另一個擴展了AbstractTree的類SearchTree。無法初始化類型

public class SearchTree<TreeNode> extends AbstractTree<TreeNode> { 
TreeNode root; 
public SearchTree(){ 
    root=new TreeNode(); 
} 
} 

構造方法有錯誤。它說它不能初始化TreeNode類型。

TreeNode是我構建的另一個類。

public class TreeNode<E> extends AbstractNode<E> { 
E element; 
TreeNode<E> parent; 
ArrayList<TreeNode<E>> children; 

public TreeNode(){ 
    parent=new TreeNode<E>(); 
    children=new ArrayList<TreeNode<E>>(); 
} 
//...some other methods 
} 
+2

沒有,'TreeNode'是一個通用型的變量。 – 2015-03-02 17:09:20

+0

請發佈'AbstractTree'類代碼。 – 2015-03-02 17:11:02

+0

在SearchTree類中,創建「root」時,我相信您需要爲提供一個數據類型。我相信這就是@SotiriosDelimanolis正在做的事情。 – FreakyDan 2015-03-02 17:19:33

回答

0

您對SearchTree的聲明有錯誤。事實上,public class SearchTree<TreeNode> extends AbstractTree<TreeNode> {正在使用TreeNode作爲泛型類Type參數,而不是您打算在此處使用的TreeNode類。

因此,您稱爲TreeNode的泛型類型參數現在隱藏了真正TreeNode類的用法。見所附的圖像

generic type hidding class

所以我會改變你的SearchTree類的方式如下:

public class SearchTree<E> extends AbstractTree<TreeNode<E>> { 

    TreeNode<E> root; 
    public SearchTree() 
    { 
     root = new TreeNode<E>(); 
    } 

} 
相關問題