The reason for your this new Java Edition after JDK 1.5 or later as it gives more ease to the programmer as it allow type safety at compile type only.
The million dollar question is why it is needed so?
The answer is let say you have List in which you want to add integer type objects only into it like below
List list = new ArrayList();
list.add(new Integer(5));
but by mistake you add String object into it.
list.add("Test");
Now in you other code you are using this list assuming that all values are integer
(Integer)list.get(2);
this will give error at run time, so to avoid this it is better to defined your list at declaration part like list and it will not allow you to add string object to you.