2012-01-15 113 views
3

我在静态方法中泛型类型有问题。我有这样的代码:静态方法中的泛型类型

public class BST<E extends Comparable<E>> { 

    public static class Node<T> { 
    private T value; 
    private Node<E> left, right, parent; 
    private Node(T v){ value = v; } 

    public String toString() { 
     return value.toString(); 
    } 
} 
.... 
} 

然后我想使用节点在这个静态方法:

public static <E> boolean equalTrees(Node<E> r1, Node<E> r2) 

但节点是给我这个错误:

成员类型BST.Node必须使用参数化类型合格,因为它不是静态的

我已经搜索并找不到答案。

+0

哪里'equalTrees'方法?它是在“BST”类还是在“Node”类中? BST班级内的 – 2012-01-15 16:48:13

+0

。 – 2012-01-15 17:00:56

+3

这是哪一种语言? – 2012-01-15 17:08:07

回答

2

试试这个:

public class BST<E extends Comparable<E>> { 

    public static <E> boolean equalTrees(Node<E> r1, Node<E> r2) { 
     return false; 
    } 

    public static class Node<E> { 
     private E value; 
     private Node<E> left, right, parent; 
    } 

} 
+0

然后我得到这个错误:不能静态引用非静态类型E – 2012-01-15 16:48:42

+0

在你的问题中缺少一些东西,你应该发布更多的代码,因为如上所述,上面的代码对我有用 – 2012-01-15 16:52:12

+0

用整个Node类编辑 – 2012-01-15 16:55:07