相同类型的类型不匹配
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;
}
}
我目前正在尝试开始我的一门 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;
}
}