繁体   English   中英

如何使用扩展类 <E extends Comparable<E> &gt;

[英]How to extend Generic abstract Class with <E extends Comparable<E>>

我正在尝试使一个抽象类AbstractBinSearchTree像这样:

public abstract class AbstractBinSearchTree<E extends Comparable<E>>
{ 
   public abstract void add(E element);
   public abstract void add(Collection<E> elemente);

   public List<E> retrieveInOrder(Pos<E> p) {
   ...
   }

我的问题现在是如何从此类扩展。 我想制作一个ArrayBinTreeSearch ,可以像这样实例化:

AbstractBinSearchTree<Elem> tree = new ArrayBinSearchTree<Elem>();

我尝试了这个:

public class ArrayBinSearchTree<E extends Comparable<? super E>> extends AbstractBinSearchTree<Comparable<E>>{

Comparable<E>[] _tree;

public ArrayBinSearchTree(int size)
{
    _tree = new Comparable[size];
}

@SuppressWarnings("unchecked")
@Override
public void add(Comparable<?> element) {
    ...
}

但是我并不真的觉得这是使用它的正确方法。 同样,我无法像上面提到的那样实例化。

我相信您需要替换以下行:

public class ArrayBinSearchTree<E extends Comparable<? super E>> extends AbstractBinSearchTree<Comparable<E>>{

附:

public class ArrayBinSearchTree<E extends Comparable<? super E>> extends AbstractBinSearchTree<E>{

否则,您将限制AbstractBinSearchTree中任何方法的参数。 此外,按如下所示扩展AbstractBinSearchTree的通用类型:

public abstract class AbstractBinSearchTree<E extends Comparable<? super E>>

另外,您的ArrayBinSearchTree构造函数具有一个int参数:

AbstractBinSearchTree<Elem> tree = new ArrayBinSearchTree<Elem>(5);

并且可以用菱形语法代替:

AbstractBinSearchTree<Elem> tree = new ArrayBinSearchTree<>(5);

假设您使用的是Java 7或更高版本

与它的界面相当,然后必须将“扩展”更改为“实现”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM