如何在Java中正确编写以下类声明?
public class BinarySearchTree<T extends BinarySearchNode<E implements Comparable<E>>> implements Iterable<E>
基本上,我正在尝试创建任何类T的BinarySearchTree,它继承了Comparable数据类型E的BinarySearchNode(而我的BinarySearchTree也应该是Iterable)。
如何在Java中正确声明该类? 谢谢!
答案 0 :(得分:2)
public class BinarySearchTree<T extends BinarySearchNode<E>, E extends Comparable<E>> implements Iterable<E>
类型参数E需要与节点类型分开定义,即使它最终看起来多余:BinarySearchTree<BinarySearchNode<String>, String>
。 Java不允许您直接访问泛型类型的泛型参数。
另外,请注意,通用参数始终使用&#34; extends&#34;即使是接口。
答案 1 :(得分:0)
使用Java中的Generics,您只能使用extends
。所以,基本上你的方法装饰会变成:
public class BinarySearchTree<T extends BinarySearchNode<E extends Comparable<E>>> extends Iterable<T>
即使是那些实现接口的类,泛型也会使用extends
。如果你从相反的方向看继承,那么泛型的唯一其他语法是super