Because the return type of List.toArray method is Object
At runtime, the toArray return method returns the same type of array
as is passed as parameter.
But this information is not known to the compiler.
The compiler only knows that the return type is Object 
and so it forces you to type-cast.
Does this make sense ?