Дженерики не работает с примитивными типами, только с типами объектов.
Вы можете делать то, что выглядит как использование генериков с примитивными типами, из-за авто-бокс:
<T> void methodOne(T value) {}
methodOne(1); // Compiles OK, T = Integer.
Что на самом деле происходит вот что int
буквальным 1
в настоящее время «боксовый» в Integer.valueOf(1)
, который объект типа Integer
.
Вы можете передать также int[]
в общий метод, потому что int[]
- это тип объекта. Итак:
methodOne(new int[1]); // Compiles OK, T = int[].
Однако, вы не можете смешивать эти два с одной и той же переменной типа: int[]
и Integer
не связанные типы, так что нет ни одного типа переменной T
, которая удовлетворяет обоим параметрам. Нет эквивалентного оператора автоматического бокса от int[]
до Integer[]
.
Таким образом, вы должны пройти Integer[]
массив в качестве первого параметра:
method(new Integer[1], 0);
Дженерики не работает с примитивными типами, это только для объектов. Попробуйте с помощью 'new Integer [1], 0' вместо этого. –
Это также причина, по которой в Java создаются 'Double',' Integer', 'Boolean', .... –
Что вы имеете в виду, когда вы говорите, что примитивы не работают с универсальными типами? int работает просто отлично, это просто массив, вызывающий проблемы – Dimpl