【发布时间】:2016-10-14 06:44:09
【问题描述】:
我想实现一个简单的排序函数,它对列表进行排序并返回排序后的列表(非常简单!)。所以我写了这个
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 扩展了在方法 sort(T#1) 中声明的 List T#2 扩展了方法 sort(List) 中声明的 Comparable T#3 扩展方法 sort(List,Comparator) 中声明的对象 其中 CAP#1 是一个新的类型变量: CAP#1 扩展了 Comparable 的捕获?扩展可比
那有什么问题?!
提前致谢:)))
【问题讨论】:
-
其中一个问题是如果
T extends P、List<T>没有扩展List<P>,那么不知何故你的泛型不正确,因为你期待T extends List<..>。 -
该方法的目的是什么?为什么不就地调用 Collections.sort()?!
标签: java generic-programming generic-list