Java - 使用Comparable的静态通用类型

时间:2012-02-13 03:33:25

标签: java generics types static comparable

好吧,所以我一直在尝试实现一个默认情况下使用可比数据类型的简单二叉搜索树。

忽略课程中的所有其他方法,这是我认为非常标准的一般设置:

public class BSTNode<E extends Comparable<? super E>>{
     E data;
     BSTNode<E> left;
     BSTNode<E> right;
     //and I'm trying to define a static method(inside of the class) like this:
     public static <E> String displayAscending(BSTNode<E> node){} 
}

但是编译器并不喜欢它。现在,我对通用类型有点新意,所以我将解释我对它的作用的理解,这可能有助于你弄清楚我的想法有什么问题。

E扩展可比较 所以基本上是一个对象E,它是Comparable的扩展。可比较的元素是E的祖先,它本质上是一种抽象的方式,可以使用Comparable接口将E与其他元素进行比较。

然后在我的静态方法中,我试图以递归方式传递BSTNode。我似乎无法理解为什么它不起作用。我知道如果我通过BSTNode<?>它工作正常,但这似乎很危险。如果有人可以向我解释为什么这不起作用,我可以尝试找到另一种解决方案。

1 个答案:

答案 0 :(得分:6)

试试这个

public static <E extends Comparable<? super E>> String displayAscending(BSTNode<E> node)