Java 理解快速排序语法

Java 理解快速排序语法,java,syntax,quicksort,bounding,Java,Syntax,Quicksort,Bounding,我对这种语法感到困惑,因为一开始它看起来好像函数应该返回,但后来我看到void。在无效之前的目的是什么 另外,我对边界和泛型很熟悉,但我从未见过这样的边界。这个语法是什么意思Comparator 如果数组是Number[],则“?”的下界设置为java.lang。Number ie“?”可以是任何数字的超类。第一个不是类型-它是类型约束 请记住,Java通过类型擦除实现泛型——这意味着此方法的运行时类型签名是 private void sort(Object[] array, Comparato

我对这种语法感到困惑,因为一开始它看起来好像函数应该返回
,但后来我看到
void
。在
无效之前
的目的是什么

另外,我对边界和泛型很熟悉,但我从未见过这样的边界。这个语法是什么意思
Comparator
如果数组是Number[],则“?”的下界设置为java.lang。Number ie“?”可以是任何数字的超类。

第一个
不是类型-它是类型约束

请记住,Java通过类型擦除实现泛型——这意味着此方法的运行时类型签名是

private void sort(Object[] array, Comparator cmp)
(通过删除
之间的所有内容),使您的方法具有返回类型
void

所做的是说明输入数组和比较器的类型是相关的:比较器需要能够比较
E
类型的“事物”,但实际上它不必只处理确切类型的事物
E

这就是

起初,函数似乎应该返回
,但后来我看到
void

部分有一个语法,用于为泛型方法提供其类型参数。实际返回类型为
void


这个语法是什么意思?
Comparator“在无效之前,
的目的是什么?”它表明它是一个通用方法。“此语法是什么意思
Comparator@JonSkeet谢谢,Jon。这是可选的语法吗?@inquisitor当你想知道Java的一些特性时,比如泛型,只需在google上搜索“Java教程”(在本例中是“Java泛型教程”),并且第一个结果通常是正确的。Java教程包含详细的解释,并附有大量的示例。@jbnize非常感谢。我最初不确定如何通过谷歌搜索答案,主要是因为它与sytnax相关。但你是对的,将来会这样做。
Comparator<? super E>  
private <E> void sort(E[] array, Comparator<? super E>  cmp)
qsort(array, 0, array.length - 1, cmp);
private void sort(Object[] array, Comparator cmp)