Узагальнення (generics)
Коротко: Спосіб писати класи та методи так, щоб вони працювали з різними типами даних, не створюючи для кожного типу окрему майже однакову версію.
Докладніше: Узагальнений список, наприклад, можна використовувати як List<Number> або List<Text> з тим самим кодом класу — конкретний тип задається під час використання. Велика перевага перед списком, що приймає будь-що: помилки через неправильні типи ловляться вже під час компіляції, а не спричиняють збій лише під час виконання.
Подробиці
Без узагальнень ви зіткнулися б із двома поганими альтернативами…
Див. також: класи, список, приведення типів