无法初始化类型

时间:2015-03-02 17:08:52

标签: java tree initialization

我建立了一个班级' AbstractTree'并创建另一个类' SearchTree'它扩展了' AbstractTree'。

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
}

1 个答案:

答案 0 :(得分: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>();
    }

}