Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 同一类型的类型不匹配_Java_Generics_Type Constraints - Fatal编程技术网

Java 同一类型的类型不匹配

Java 同一类型的类型不匹配,java,generics,type-constraints,Java,Generics,Type Constraints,我目前正试图为我的一门CS课程开始一个项目,在我被一个相当令人困惑的错误击中之前,我甚至没来五分钟。我的代码如下: import java.util.Comparator; import java.util.List; public class MergeSorter<T extends Comparable<T>> implements IMergeSorter { private List<T> arrayStore; private L

我目前正试图为我的一门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;
    }
Eclipse给了我以下错误:

Type mismatch: cannot convert from List<T extends Comparable<T>> to List<T extends Comparable<T>>
类型不匹配:无法从列表转换为列表
注: 方法本身是由我的教授提供给我的,我对这个类所做的唯一事情就是在顶部添加三个变量,更改类的泛型类型(最初是(T),我将其更改为(T),并在“排序”中添加一行方法。非常感谢任何帮助!

通过在方法签名中使用
类型声明,您将引入第二个类型变量
T
,该变量虽然名称相同,但与类声明中的变量不同

要修复此问题,请从方法签名中删除类型声明:

public int sort(List<T> list) 
{
    arrayStore = list;
    return 0;
}
public int排序(列表)
{
arrayStore=列表;
返回0;
}

我认为仅仅从方法中删除
是不够的,因为它是一个
重写
方法,但在接口
IMergeSorter
中没有类型声明

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

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

那个声明看起来确实有点不合适。我并不感到惊讶;我教授的代码几乎从来都不会马上生效,我们学生总是要改变一些东西使其功能化。谢谢你的回答!我认为仅仅从方法中删除
是不够的,因为它是一个重写方法,但在方法中没有类型声明接口
IMergeSorter
,我添加了一个新的答案作为补充您的答案很好,但我不是在猜测,无论接口是如何声明的,代码
public class MergeSorter都实现了IMergeSorter{@Override public int sort(List List){return 0;}
将不会编译。@shizhz你说得对。需要
实现IMergeSorter
中的类型参数+1
public interface IMergeSorter<T extends Comparable<T>> {
 int sort(List<T> list);
}
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;
    }
}