在课堂上实现时保持泛型类型

时间:2015-02-26 00:43:22

标签: java class generics interface

我已经完成了很多搜索泛型类型问题的工作,并且找不到任何帮助我弄清楚我在这里做错了什么的东西。我有一个如下界面:

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

现在,下一步是创建一个实现此接口的类。这个特殊的类将使用插入排序,我需要保持ArrayList类型&#39; E&#39;通用的,所以我尝试了各种各样的东西,结果如下:

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>

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

2 个答案:

答案 0 :(得分:3)

中指定类似SortAnalysis<E>的类型
public class InsertionSort<E extends Comparable<? super E>> 
        implements SortAnalysis<E> {

当你省略它时,你有raw-type而不是通用版本。

答案 1 :(得分:3)

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

implements子句中提供类型参数。

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

现在,您可以在<E>参数中添加list