我们在教程中制作了一个带有以下签名的示例(作为界面的一部分)
<T> List<Comparable<T>> sort(Collection<Comparable<T>> c, boolean ascending);
我们发现几乎不可能在没有警告的情况下实现该方法:
public <T> List<Comparable<T>> sort(Collection<Comparable<T>> c, boolean ascending) {
List<T> list = new ArrayList<T>();
Collections.sort(list);
return list;
}
我们得到的行中的错误Collections.sort(list)
是:
Bound mismatch: The generic method sort(List<T>) of type Collections is not
applicable for the arguments (List<T>). The inferred type T is not a valid
substitute for the bounded parameter <T extends Comparable<? super T>>
但是,它适用于以下签名:
<T extends Comparable<T>> List<T> sort(Collection<T> c, boolean ascending);
有了这个签名,上面的代码(的实现sort
)就可以按预期工作。我想知道这是什么原因。