Подтвердить что ты не робот

Почему Arrays.sort использует Object [], а не Comparable []?

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

Почему... public static void sort (Object [] a), а не public static void sort (Comparable [] a)? Благодаря

4b9b3361

Ответ 1

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

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

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

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

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

Итак, это преждевременная оптимизация:)

Ответ 2

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