Для чего нужны generics я в принципе понимаю: чтобы при обращении к элементам коллекции получать объекты специфического типа, а не типа Object. Не понимаю только, зачем прописывать их дважды:
ArrayList<Shape> list = new ArrayList<Shape>();
Да, я в курсе, что в java 7 можно обойтись бриллиантом, но мне всё равно не понятно, почему тип убирается именно в создании коллекции. Объясните, в чём разница между этими двумя строками:
ArrayList<Shape> list = new ArrayList<Shape>();
ArrayList list = new ArrayList<Shape>();
Заранее благодарю.
PS: Нет, в гугле меня не забанили, правда не могу найти ответ.