在 class 中实现时保留通用类型

Keeping generic types when implementing in class

我已经对一般类型的问题进行了大量搜索,但没有找到任何可以帮助我弄清楚我在这里做错了什么的东西。我的界面如下:

public interface SortAnalysis<E extends Comparable<? super E>> 
{
    public long analyzeSort(ArrayList<E> list);
}

现在,下一步是制作实现此接口的 class。这个特定的 class 将使用插入排序,我需要保持 ArrayList 类型 'E' 通用,所以我尝试了各种方法并最终得到以下结果:

public class InsertionSort<E extends Comparable<? super E>> implements SortAnalysis {

@Override
public long analyzeSort(ArrayList list) {
    // TODO Auto-generated method stub
    return 0;
}

我的问题是,当我尝试对参数执行此操作时

ArrayList<E> list

编译器抱怨我实现超类型方法。

如果能提供任何帮助,我将不胜感激。 谢谢!

**我还不能将此标记为已回答,但它是。我想我的问题是当我

SortAnalysis<E>

我没有在 class 名称后列出通用类型。**

中像SortAnalysis<E>一样指定类型
public class InsertionSort<E extends Comparable<? super E>> 
        implements SortAnalysis<E> {

当您省略它时,您得到的是 raw-type 而不是通用版本。

声明 InsertionSort class 时,您正在实现 SortAnalysis class 的原始形式。这意味着当您在 list 参数中包含 <E> 时,analyzeSort 未正确覆盖 SortAnalysis

implements 子句中提供类型参数。

class InsertionSort<E extends Comparable<? super E>>
    implements SortAnalysis<E> {
//                         ^^^

现在您可以在 list 参数中包含 <E>