toArray
method hides <E>
passed to Collection<E>
interface. Below is the method signature.
<T> T[] toArray(T[] a);
Because of which below is possible. And results into ArrayStoreException
ArrayList<String> string = new ArrayList<String>();
string.add("1");
string.add("2");
Integer intArray[] = new Integer[2];
intArray = string.toArray(intArray);
I wanted to know why was such decision taken? Why was such a case allowed while designing the API ? As anyway this code results in to RuntimeException
?
The toArray
method predates the introduction of generics. The original signature of toArray
took an arbitrary Object[]
.
This is the only way, with generics, to accept the same input that was permissible before generics. However, the advantage of taking an arbitrary T[]
is that it can return the same array type that it's passed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With