我可以使用<T implements ..>
代替<T extends...>
吗?
如果没有extends / implements,我不能使用<Comparable>
吗?
为什么或为什么不呢?
class SomeClass
{
public static <T extends Comparable> somemethod(T[] a)
{
// do stuff
}
}
答案 0 :(得分:4)
Comparable
是通用类型(和接口),因此您必须扩展,而不能实施< / em> - 这是Java泛型的工作方式,你的方法也缺少返回签名。您可以使用Lower Bounded Wildcard之类的
public static <T extends Comparable<? super T>> T[] somemethod(T... a) {
Arrays.sort(a);
return a;
}
应该按预期工作 1 。例如,
public static void main(String[] args) {
System.out.println(Arrays.toString(somemethod(4, 3, 1, 2)));
System.out.println(Arrays.toString(somemethod(new Integer[] { 8, 7, 6, 5 })));
}
输出
[1, 2, 3, 4]
[5, 6, 7, 8]
1 在这里,variadic (varargs) function进行排序,但如果愿意,可以使用数组。