我已经完成了很多搜索泛型类型问题的工作,并且找不到任何帮助我弄清楚我在这里做错了什么的东西。我有一个如下界面:
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>
我没有在类名后面列出通用类型。**
答案 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
。