> Для чего надо менять Integer на < T >
Если мы сделаем стек только для типа Integer, мы не сможем применять его для строк, дробных чисел, пользовательских типов и тому подобное и для каждого класса придётся делать свой собственный стек, дублируя код руками. Логичнее не определять тип данных вообще и оставить это на момент, когда программист, использующий этот класс, сам задаст в нужном месте нужный тип