Java泛型类型参数

Java泛型类型参数,java,generics,Java,Generics,我很难让我的代码运行。我有一个通用方法,它应该对给定列表中的所有重复项进行排序和删除。列表中的项(例如字符串)都实现了可比较的接口。 不幸的是,代码没有编译,我不明白为什么 public static <T> List<T> distinctAndSort(List<T> s) { List<T> list = s.stream().distinct().collect(Collectors.toList()); Collectio

我很难让我的代码运行。我有一个通用方法,它应该对给定列表中的所有重复项进行排序和删除。列表中的项(例如字符串)都实现了可比较的接口。 不幸的是,代码没有编译,我不明白为什么

public static <T> List<T> distinctAndSort(List<T> s) {
    List<T> list = s.stream().distinct().collect(Collectors.toList());
    Collections.sort(list); //Error
    return list;
}
公共静态列表distinctAndSort(列表s){
List List=s.stream().distinct().collect(Collectors.toList());
Collections.sort(list);//错误
退货清单;
}

这就是我目前得到的。为什么我不能对我的
列表
进行排序?(方法sort(
List将您的类型变量声明为:

<T extends Comparable<? super T>>

根据文档,
Collections.sort(List)
必须是
Comparable
s的列表,或者您必须提供一个
Comparator
。您可以更改签名:

public static <T extends Comparable<? super T>> List<T> distinctAndSort(List<T> s)
公共静态
public static <T extends Comparable<? super T>> List<T> distinctAndSort(List<T> s)