java - 为什么 Arrays.sort 采用 Object[] 而不是 Comparable[]?

标签 java interface casting comparable

我想知道为什么 Arrays 类的 sort 方法需要一个 Object[] 类型的参数。为什么参数不是 Comparable[] 类型。如果您不传递 Comparable[],它将生成 ClassCastException。

为什么... public static void sort(Object[] a) 而不是 public static void sort(Comparable[] a) ? 谢谢

最佳答案

因为第二种形式需要重新分配数组。即使您知道数组只包含可比较对象,如果原始类型是 Object[],也不能将其强制转换为 Comparable[],因为数组类型不匹配。

你可以这样做:

Object[] arr = new String[0];
String[] sarr = (String[]) arr;

但你不能这样做:

Object[] arr = new Object[0];
String[] sarr = (String[]) arr;

所以这是不成熟的优化:)

关于java - 为什么 Arrays.sort 采用 Object[] 而不是 Comparable[]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56777671/

相关文章:

java - 在哪种情况下可以在Java中使用setStackTrace()方法?

java - 报告从 Jenkins 管道作业运行的多个 Selenium Webdriver 作业

java - 如何使用基本接口(interface)引用调用扩展接口(interface)函数?

java - 处理一个 Spring bean/接口(interface)的多个实现

c - 如何键入用数字初始化的巨大数组的强制转换元素

java - Java中这些整数是先转换为 float 再相加还是先相加​​再转换为 float ?

java - @OneToMany 关联的标准

java - 安全 AJP 连接器不呈现

java - 空白的 final 字段 conn 可能尚未在非 final 成员上初始化

swift - 从类型创建数组类型