我想知道为什么 Arrays 类的排序方法要求对象 [] 类型的参数。为什么参数不是 Comparable[] 类型。如果您不通过 Comparable[],则会生成 ClassCastException。
为什么... public static void sort(Object[] a)而不是public static void sort(Comparable[] a)?谢谢
我想知道为什么 Arrays 类的排序方法要求对象 [] 类型的参数。为什么参数不是 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;
所以这是过早的优化:)
否则不能通过Object[]
。