java - Java 中的泛型和排序

标签 java generics sorting type-safety

假设您在 Java 中编写了一个静态函数来对数组进行排序,很像 Arrays.sort()Arrays.sort() 的问题是它接收一个 Object 数组,如果它的元素没有实现 Comparable 就会抛出一个 ClassCastException .

所以您希望您的函数接收一个 Comparable 子类型的数组作为参数。类似的东西可以工作:

static <T extends Comparable> void sort(T[] array);

该签名的问题在于您仍然可以传递一个 Comparables 数组,例如整数和字符串,这会导致 RuntimeException

那么,您如何创建一个函数,它只接收一个数组,该数组的元素实现 Comparable 并且具有相同的类型(例如 Integer、String 等?)

最佳答案

使用

static <T extends Comparable<? super T>> sort(T[] array);

这是完成任务的最通用规范。基本上,它断言 T 是一种可以与自身进行比较的类型。

关于java - Java 中的泛型和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2071929/

相关文章:

java - 来自另一个程序的 Ctrl+C 按键监听器

java - 八皇后算法

java - 如何在 Eclipse 中激活泛型类型警告?

Java Collections.sort() 排除字符范围

sorting - 在批处理文件中按文件类型将文件 move 到不同目录(Win)

java - 如何在不返回结果集的spring boot中执行存储过程?

java - 将大流转换为字符串时内存不足

java - 为什么我会在这里收到类型安全警告? (泛型)

scala - 如何在 Scala 中使用泛型

postgresql - 在postgresql中对平假名中的日语单词进行排序