gpt4 book ai didi

java - 了解快速排序语法

转载 作者:行者123 更新时间:2023-12-01 14:07:26 24 4
gpt4 key购买 nike

我对这种语法感到困惑,因为起初它看起来好像函数应该返回 <E>但后来我看到void . <E> 的目的是什么?在 void 之前?

此外,我熟悉边界和泛型,但我从未真正见过以这种方式边界的东西。此语法是什么意思 Comparator<? super E>

这是一个示例函数:

private <E> void sort(E[] array, Comparator<? super E>  cmp) {
qsort(array, 0, array.length - 1, cmp);
}

最佳答案

第一个<E>不是类型 - 它是类型约束。

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

private void sort(Object[] array, Comparator cmp)

(通过删除 <> 之间的所有内容)所以您的方法具有返回类型 void .

什么 <E>确实是说输入数组和比较器的类型是相关的:比较器需要能够比较 E 类型的“事物”。 , 但它实际上不必只处理 exact 类型的事情 E .

这就是<? super E>做:例如,你可以有一个 Comparator<CharSequence> , 然后用它来排序 String[] , 自 StringCharSequence 的子类.

关于java - 了解快速排序语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31637853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com