Java метод deepToString() не работает с int[], но работает с int[][]

305
19 января 2017, 03:33

Имеется следующий код:

int[] arr1 = {10, 20, 30, 40};
System.out.println(Arrays.deepToString(arr1));

Здесь компилятор выдаёт ошибку:

incompatible types: int[] cannot be converted to java.lang.Object[]

При этом следующий код компилируется без ошибок:

int[][] arr2 = {{10, 20}, {30, 40}};
System.out.println(Arrays.deepToString(arr1));

Почему int[] не может конвертироваться в Object? Разве массивы примитивов не являются объектами? И почему при этом двумерный массив примитивов int[][] в Object прекрасно конвертируется?

Answer 1

Всё правильно говорит.

int[] - Object, а int[][] это массив Objectов (Object[], где каждый элемент - int[]), то есть массив массивов, где внутренний массив является объектом. int[] - массив примитивов, который не умеет автобокситься в Integer[] (вы ведь на это намекаете в вопросе?). Запутанно, но, надеюсь, понятно.

Для примитивных одномерных массивов есть Arrays.toString(...)

READ ALSO
Java (Selenium) - получение ссылки из исходного кода

Java (Selenium) - получение ссылки из исходного кода

В Firefox с помощью инструмента "Исследовать элемент" в интересующем куске кода есть ссылки, которые хочу брать используя методы библиотеки...

328
Получить root path Java (Spring MVC)

Получить root path Java (Spring MVC)

Мне в крон-методе необходимо получить рутовый путьРанее, в контроллерах, я использовать UriComponentBuilder, но в кроны лежат в сервисах и никакой...

352
вопрос по обратным фокусам в EditText

вопрос по обратным фокусам в EditText

Есть 3 полякогда заполняется поле №1 фокус перескакивает на поле №2

315