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