Как уже отмечали другие: массив в Java является довольно "низкоуровневой" конструкцией.Хотя это Object
, на самом деле это не часть объектно-ориентированного мира.Это верно для массивов ссылок, таких как String[]
, но даже в большей степени для примитивных массивов, таких как int[]
или float[]
.Эти массивы - это скорее «сырые, непрерывные блоки памяти», которые имеют прямое представление внутри виртуальной машины Java.
С точки зрения языкового дизайна, массивы в Java могут даже рассматриваться как дань C иC ++.Есть языков, которые являются чисто объектно-ориентированными и в которых не существует простых массивов или примитивных типов, но Java не является одним из них.
Более конкретно, сосредоточив внимание на вашем вопросе:
Важным моментом здесь является то, что Arrays#asList
делает , а не делает какие-либо преобразования.Он создает только List
, то есть представление в массиве.В отличие от этого, метод Collection#toArray
действительно создает новый массив.Я написал несколько слов о последствиях этой разницы в этом ответе о списках, которые создаются с помощью Arrays#asList
.
Кроме того, метод Arrays#asList
работает только для массивов, гдеэлементы являются ссылочными типами (например, String[]
).Он не работает для примитивных массивов, таких как long[]
*.Но, к счастью, есть несколько способов справиться с этим, и я упомянул несколько из них в этом ответе о том, как преобразовать примитивные массивы в List
объекты .
* На самом деле Arrays#asList
работает для примитивных массивов, таких как long[]
, но не создает List<Long>
, а List<long[]>
.Это часто источник путаницы ...