相同类型的类型不匹配

Type mismatch of same type

我目前正在尝试开始我的一门 CS 课程的项目,但我什至没有上五分钟就遇到了一个相当令人费解的错误。我的代码如下:

import java.util.Comparator;
import java.util.List;

public class MergeSorter<T extends Comparable<T>> implements IMergeSorter
{
    private List<T> arrayStore;
    private List<T> temp;
    private int arrSize;

    @Override
    public <T extends Comparable<T>> int sort(List<T> list) 
    {
        arrayStore = list;
        return 0;
    }

我遇到的问题是排序方法中的第一行,

arrayStore = list;

使用 Eclipse 时出现以下错误:

Type mismatch: cannot convert from List<T extends Comparable<T>> to List<T extends Comparable<T>>

备注: 该方法本身是我的教授提供给我的,我对这个 class 所做的唯一事情就是在顶部添加三个变量,更改 class' 泛型类型(它最初是 (T ),我改为 (T extends Comparable(T)),并在 "sort" 方法中添加一行。非常感谢任何帮助!

通过在方法签名中使用 <T extends Comparable<T>> 类型声明,您将引入第二个类型变量 T,尽管它具有相同的名称,但与你的 class 声明。

要修复,请从您的方法签名中删除类型声明:

public int sort(List<T> list) 
{
    arrayStore = list;
    return 0;
}

从你的代码中我认为简单地从你的方法中删除 <T extends Comparable<T>> 是不够的,因为它是一个 override 方法但是你的接口中没有类型声明 IMergeSorter.

我不知道你的 IMergeSorter 声明,但它可能是:

public interface IMergeSorter<T extends Comparable<T>> {
 int sort(List<T> list);
}

然后你的 MergeSorter 应该是:

import java.util.Comparator;
import java.util.List;

public class MergeSorter<T extends Comparable<T>> implements IMergeSorter<T> {
    private List<T> arrayStore;
    private List<T> temp;
    private int arrSize;

    @Override
    public int sort(List<T> list) {
        this.arrayStore = list;
        return 0;
    }
}