Почему Arrays.sort принимает Object [], а не Comparable []? - PullRequest
18 голосов
/ 11 февраля 2010

Мне было интересно, почему метод sort класса Arrays запрашивает параметр типа Object []. Почему параметр не относится к типу Comparable []. Если вы не передаете Comparable [], он генерирует ClassCastException.

Почему ... публичная статическая сортировка void (Object [] a) , а не публичная статическая сортировка void (Comparable [] a) ? Спасибо

Ответы [ 2 ]

9 голосов
/ 11 февраля 2010

Поскольку вторая форма потребует перераспределения массива. Даже если вы знаете, что ваш массив содержит только сопоставимые объекты, вы не можете просто привести его к Comparable [], если исходный тип был Object [], поскольку тип массива не совпадает.

Вы можете сделать:

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

Но вы не можете сделать:

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

Так что преждевременная оптимизация:)

4 голосов
/ 11 февраля 2010

В противном случае вы не можете пройти Object[] in.

...