Если вы использовали метод с
public <T> void print(T value);
и хотели бы напечатать значение int
, тогда if будет использоваться как
public void print(Integer value);
, поэтому int
значение будет заключено в рамку, что означает потерю производительности и ненужное использование памяти.
Это причина того, что вы часто найдете перегрузки методов для всех примитивных типов данных
Также, как указал Таши, класс просто старше, чем обобщенные в Java.