Object arr = new int[]{1,2,3};
arr = (int[])arr;
int someArr [] = (int[])arr;
for(int i:arr) // compilation error
System.out.println(i);
for(int i:someArr) //works fine
System.out.println(i);
Почему литье во второй строке не преобразует arr в массив int? Я получаю ошибку компиляции в строке 4, в которой говорится: «Может только перебирать массив или экземпляр java.lang.Iterable
». Во время отладки, в строке 2, моментальный снимок переменной показывает arr с индексированными значениями.Что не так с литой на второй строчке?
Потому что 'arr' статически вводится как объект, и поэтому вы не можете изначально перебирать его. Используйте 'for (int i: someArr)'. –
Нет прямого способа сделать это. Вы должны вручную вводить каждый элемент. – Lion
Просто боковое примечание: лучше использовать стиль кодирования для записи 'int [] someArr'. В конце концов, это массив 'int', а не массив' someArr' –