Почему примитивные типы данных не разрешены в java.утиль.Класса ArrayList? [дубликат]

Возможные Дубликаты:
хранение примитивных значений в коллекции Java?

ArrayList принимает только ссылочные типы в качестве своего элемента, а не примитивные типы данных. При попытке сделать это он создает ошибку времени компиляции.

какова концепция этого? Это кажется ограничением, не так ли?

3 ответов


все классы коллекции java хранят расположение памяти объектов, которые они собирают. Примитивные значения, не поместиться в к тому же определению.
Чтобы обойти эту проблему, JDK5 и далее иметь автоупаковка - где примитивы преобразуются в соответствующие объекты и обратно, когда они добавляются или считываются из коллекций.

Если вы посмотрите на исходный код ArrayList, он использует массив объектов для хранения значений. Это один из автобоксинг причин происходит при попытке сохранить примитивные типы в коллекциях.


потому что Java может использовать только класс (а не примитивные типы) и массивы (также массивы для примитивов) для дженериков (между ).

List list; это также причина, по которой существуют классы-оболочки для примитивных типов:

int - > Integer

boolean - > Boolean

двойной -> двойной

byte - > Byte etc...