Differences between cast arraylist and cast array in java -


this question has answer here:

as jon's answer of post has said, if compiler allows cast (shown below), add other objects later can bad thing program.

    arraylist<string> temlist = new arraylist<string>();     arraylist<object> oblist = (arraylist<object>)temlist;//compile error     //oblist.add(1); --bad 

but confuses me why in same situation, array has different behaviours.

    string[] strings = new string[10];     object[] temp = (object[])strings;//nothing happens 

so explain difference here , why java make such design? thanks.

edit: 1 similar question

arrays not 100% objects, mundane objects. arraylist 100% object.

if try assign integer temp array throw arraystoreexception.

so casting arrays fine.

but casting arraylist super object underlying arraylist implementation can hold string (sub class) cause problems during runtime.

thanks generics compiler can identify before happens , can show compiler error. design if not program fail during runtime.

prior java 1.5 generics

list list = new arraylist(); list.add(1); list.add("one"); list.add(100l); 

was legal coders had lot of instanceof checks. failed check program crashed during runtime.


Comments

Popular posts from this blog

javascript - RequestAnimationFrame not working when exiting fullscreen switching space on Safari -

Python ctypes access violation with const pointer arguments -