Java 绑定不匹配:类型不是绑定参数的有效替代项

Java 绑定不匹配:类型不是绑定参数的有效替代项,java,oop,generics,Java,Oop,Generics,我最近开始实现一些数据结构,并且,我正试图使所有内容尽可能“可扩展” public abstract class AbstractNode<E extends Element, U extends AbstractNode<E, U>> { ... } public class BinarySearchTree<Element> extends Tree<Element, Node<Element>> { ... } public

我最近开始实现一些数据结构,并且,我正试图使所有内容尽可能“可扩展”

public abstract class AbstractNode<E extends Element, U extends AbstractNode<E, U>> { ... }

public class BinarySearchTree<Element> extends Tree<Element, Node<Element>> { ... }

public class Element implements Cloneable { ... }

public class Node<E extends Element> extends AbstractNode<E, Node<E>> { ... }

public abstract class Tree<E extends Element, T extends AbstractNode<E, T>> { ... }
我在BinarySearchTree类中遇到了很多错误,消息绑定不匹配:type元素不是type节点的绑定参数的有效替代品。为什么?我做错了什么

另外,在BinarySearchTree类中,我得到一个类型参数元素在BinarySearchTree中隐藏了类型元素

谢谢你的帮助

二进制搜索树的定义是:

现在,您得到的错误更有意义:

类型T不是类型节点的有界参数的有效替代品

这是合理的,因为参数T没有上限元素,这是节点定义所必需的。这可以通过以下方式轻松解决:

public class BinarySearchTree<T extends Element> extends Tree<T, Node<T>>
注意,这里的上限不是类型参数,而是实际的类型元素


根据经验,应该避免将类型参数命名为现有类型,因为可能会发生很多混淆。类型参数名称通常由一个大写字母组成。如果您遵循这种做法,那么很难出现类似的问题。

请输入代码?我们需要查看发生错误的实际代码,以及编译器报告的错误的确切位置。我确实在这里发布了整个代码@Alexandr,我提取了代码,需要了解问题:是的,我看到了,谢谢,但是这些类的内部可能也很重要。发布编译器抱怨的行怎么样?如果在树类中,我有一个受保护的T根怎么办;我想在BinarySearchTree类中初始化它,而不进行任何强制转换?我无法写入root=new Nodenull,new Element15;。。
public class BinarySearchTree<T> extends Tree<T, Node<T>>
public class BinarySearchTree<T extends Element> extends Tree<T, Node<T>>