问题
I was wondering why the sort method of the Arrays class is asking for a parameter of type Object[]. Why the parameter is not of type Comparable[]. If you don't pass a Comparable[] it's generating a ClassCastException.
Why ... public static void sort(Object[] a) and not public static void sort(Comparable[] a) ? Thanks
回答1:
Because the second form would require a reallocation of the array. Even if you know that your array contains only comparables, you cannot just cast it to Comparable[] if the original type was Object[], since the array type does not match.
You can do:
Object[] arr = new String[0];
String[] sarr = (String[]) arr;
But you can't do:
Object[] arr = new Object[0];
String[] sarr = (String[]) arr;
So it's premature optimization :)
回答2:
Otherwise you can't pass Object[]
in.
来源:https://stackoverflow.com/questions/2246615/why-does-arrays-sort-take-object-rather-than-comparable