Поскольку массивы были в Java с самого начала, в то время как generics были введены только в Java 5. И метод List.toArray()
был введен в Java 1.2 до того, как появились дженерики, и поэтому было указано, что он возвращает Object[]
. Многие существующие коды теперь ожидают, что List.toArray()
вернет Object[]
, поэтому его теперь нельзя изменить.
Кроме того, генераторы стираются во время выполнения, поэтому ArrayList
не может даже построить массив нужного типа, если он захочет.
Лазейкой для этого является метод List.toArray(T[])
, который вернет вам массив правильного типа, если вы дадите ему массив правильного типа, чтобы он знал, какой тип использовать.