Нельзя передавать в качестве параметризованого типа примитивный тип.
Нельзя создавать любые контейнеры с примитивными типами: ArrayList<int>, Map<String, char>, Collection<double>. Вместо этого можно использовать ArrayList<Integer>, Map<String, Character>, Collection<Double>.
Это же касается методов. Если у нас есть класс Pair:
То вызывать конструктор нужно вызывать с аргументами не примитивных типов.