Generics позволяют писать классы и методы, параметризованные по типу, чтобы один и тот же код работал со многими типами, сохраняя безопасность типов во время компиляции. Это параметрический полиморфизм — "одна форма, любой тип".
Проблема, которую они решают
();
list.add();
(String) list.get();
