假设您在 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/