java: (String[])List.toArray() gives ClassCastException
This is because when you use
toArray()
it returns an Object[], which can't be cast to a String[] (even tho the contents are Strings) This is because the toArray method only gets a
List
and not
List<String>
as generics are a source code only thing, and not available at runtime and so it can't determine what type of array to create.
use
toArray(new String[v2.size()]);
which allocates the right kind of array (String[] and of the right size)
You are using the wrong toArray()
Remember that Java's generics are mostly syntactic sugar. An ArrayList doesn't actually know that all its elements are Strings.
To fix your problem, call toArray(T[])
. In your case,
String[] v3 = v2.toArray(new String[v2.size()]);
Note that the genericized form toArray(T[])
returns T[]
, so the result does not need to be explicitly cast.