Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does Arrays.sort take Object[] rather than Comparable[]?

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

like image 373
Joel Avatar asked Feb 11 '10 18:02

Joel


1 Answers

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 :)

like image 86
Alexander Torstling Avatar answered Sep 18 '22 11:09

Alexander Torstling