Почему Arrays.sort берет Объект [], а не Сопоставимый []?

Я задавался вопросом, почему метод сортировки класса Массивов просит параметр текстового объекта []. Почему параметр не имеет типа, Сопоставимого []. Если Вы не передаете Сопоставимое [], это генерирует ClassCastException.

Почему... общедоступный статический пустой вид (Объект [] a) и не общедоступный статический пустой вид (Сопоставимый [] a)?Спасибо

18
задан Mechanical snail 14 January 2013 в 04:39
поделиться

2 ответа

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

Вы можете:

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

Но вы не можете:

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

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

9
ответ дан 30 November 2019 в 09:25
поделиться

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

4
ответ дан 30 November 2019 в 09:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: