我可以使用 <T implements Comparable> 还是只使用 <Comparable>

Can I use <T implements Comparable> or just <Comparable>

我可以使用 <T implements ..> 代替 <T extends...> 吗?

我不能在没有 extends/implements 的情况下使用 <Comparable> 吗?

为什么或为什么不?

class SomeClass
{
   public static <T extends Comparable> somemethod(T[] a)
   {
        // do stuff
   }
}

Comparable 是一个 generic 类型(和一个 interface)所以你必须 extend 并且您不能 实现 - 这就是 Java 泛型的工作方式,而且您的方法缺少 return 签名。你可以使用 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但是如果你喜欢也可以使用数组