2015-03-02 197 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>(); 
    } 

} 
相关问题