Обобщения работают только с объектами
Когда объявляется экземпляр обобщенного типа, аргумент, переданный в качестве параметра типа, должен быть типом класса. Вы не можете использовать примитивный тип вроде int или char. Например, Gen можно передать любой тип класса в Т, но нельзя передать примитивный тип в качестве параметра типа. Таким образом, следующее объявление недопустимо:
Gen
// Ошибка, нельзя использовать
// примитивные типы
Конечно, невозможность использовать примитивный тип не является серьезным ограничением, так как вы можете применять оболочки типов (как это и делается в предыдущем примере) для инкапсуляции примитивных типов. Более того, механизм автоупаковки и автораспаковки Java делает использование оболочек типов прозрачным.