До генерирования Java, Collection.toArray()
не имел способа узнать, какой тип массива ожидал разработчик (особенно для пустой коллекции). Насколько я понимаю, это было основным аргументом в пользу идиомы collection.toArray(new E[0])
.
С generics Collection<E>.toArray()
может возвращать массив, полный экземпляров E
и/или его специализаций. Интересно, почему тип возврата по-прежнему равен Object[]
, а не E[]
. На мой взгляд, возврат E[]
вместо Object[]
не должен нарушать существующий код.
Смотрите: Collection.toArray()
, Collection.toArray(T[])
и связанная с этим тема java: (String []) List.toArray() предоставляет ClassCastException