我想实现一个简单的排序函数,它对列表进行排序并返回排序列表(非常简单!)。所以我写了这个
public static <T extends List<? extends Comparable>> T sort(T objects)
{
Collections.sort(objects);
return objects;
}
问题是当我尝试对一个简单的列表进行排序时,它会给我这个错误
错误:(19,20)错误:找不到合适的排序方法(T#1) 方法Collections.sort(List)不适用 (不能推断类型变量T#2 (参数不匹配; T#1无法转换为List)) 方法Collections.sort(List,Comparator)不适用 (不能推断类型变量T#3 (实际和正式的参数列表长度不同)) 其中T#1,T#2,T#3是类型变量: T#1扩展了在方法排序中声明的List(T#1) T#2扩展了方法排序(List)中声明的Comparable T#3扩展了在方法排序中声明的Object(List,Comparator) 其中CAP#1是一个新的类型变量: CAP#1扩展可以捕获?扩展可比较
那么问题是什么?!
提前致谢:)))
答案 0 :(得分:1)
正如@Bejan George指出的那样,在这种情况下,泛型类型不应该是列表,而是列表中包含的可比元素。
正确的实施方式是:
public static <T extends Comparable> List<T> sort(List<T> objects) {
Collections.sort(objects);
return objects;
}