Подтвердить что ты не робот

Почему у меня не может быть int в типе ArrayList?

Я хочу объявить ArrayList типа integer.

Почему следующее сообщение вызывает ошибку:

ArrayList<int> list1 = new ArrayList<int>();

Но следующие работы:

ArrayList<Integer> list1 = new ArrayList<Integer>();
4b9b3361

Ответ 1

ArrayList могут ссылаться только на типы, а не на примитивы. Integer - это класс, а не примитив.

Когда вы объявляете ArrayList<Integer> list1 = new ArrayList<Integer>(), вы создаете ArrayList, который будет хранить тип Integer, а не примитив int.

Если вы хотите прочитать о различии между примитивными и ссылочными типами, посмотрите http://pages.cs.wisc.edu/~hasti/cs302/examples/primitiveVsRef.html

Ответ 2

Потому что int является примитивным типом. В качестве общих параметров могут использоваться только ссылочные типы.

Ответ 3

Короткий ответ заключается в том, что generics (например, ArrayList<Integer>) не принимают примитивные типы (int), только объекты (Integer).

Это связано с тем, что такие классы, как ArrayList, реализуются с использованием объектов. Поскольку каждый класс наследуется от Object, компилятор может просто подключать другие классы. Но примитивные типы (например, int) не наследуются от Object, поскольку они не являются классами. Таким образом, Sun/Oracle разработали класс Integer, чтобы помочь с этим.

Итак, короче: int не является Object.

Ответ 4

int является primitive. Это не Object.

Подробнее см. ссылку .

Ответ 5

int является примитивным типом данных, но Integer является классом, поэтому массив arrayList может принимать только ссылочные типы, поскольку его параметр не примитивный тип