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

忽略该类中的所有其他方法,这是我所拥有的常规设置,我认为这是非常标准的:

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<?>可以正常工作,但这似乎很危险。如果有人可以向我解释为什么这不起作用,那么我可以尝试寻找其他解决方案。

最佳答案

尝试这个

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

07-26 07:48