我可以使用 <T implements ..>
而不是<T extends...>
?
我不能使用 <Comparable>
只是没有扩展/实现?
为什么或为什么不?
class SomeClass
{
public static <T extends Comparable> somemethod(T[] a)
{
// do stuff
}
}
最佳答案
Comparable
是一个通用类型(以及一个接口(interface)),因此您必须扩展并且不能>implement - 这是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排序,但如果您愿意,您可以使用数组。
关于java - 我可以使用 <T Implements Comparable> 还是仅使用 <Comparable>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35980808/