Java / Generics / ClassCastException -


i have linkedlist<t> contains object toarray() method:

public object[] toarray() {      object[] array = new object[size];      int c=0;     for(node<t> = first;i != null;i=i.next)     {         array[c++] = i.data;     }      return array; } 

i sort linkedlist generic method: <t extends comparable> void sort (list<t> list). sort lists, must represent them array in method:

t[] elements = (t[])list.toarray();` 

however, classcastexception @ line , don't know why. since generic type of method equivalent element's runtime type in returned array, cast not lie!

toarray() returns object[]. type information lost , can't cast t[]. if want keep type information can use following. give method predifined array filled. if don't give - toarray create new object[].

t[] elements = list.toarray(new t[list.size()]); 

just filling array (another writing style):

t[] elements = new t[list.size()]; list.toarray(elements); 

or if use java 8:

t[] elements = list.stream().toarray(t[]::new); 

Comments

Popular posts from this blog

sublimetext3 - what keyboard shortcut is to comment/uncomment for this script tag in sublime -

java - No use of nillable="0" in SOAP Webservice -

ubuntu - Laravel 5.2 quickstart guide gives Not Found Error -