Следующий сегмент java приведет к исключению NullPointException, поскольку список переменных имеет значение NULL, которое передается в цикл for-each.
List<> arr = null;
for (Object o : arr) {
System.out.println("ln "+o);
}
Я думаю, что for (Object o : arr){ }
эквивалентно
for (int i = 0; i < arr.length; i++) { }
и/или
for (Iterator<type> iter = arr.iterator(); iter.hasNext(); ){
type var = iter.next();
}
В обоих случаях arr имеет значение null, вызывает arr.length или arr.iterator() выдает исключение NullPointException
Мне просто интересно, почему for (Object o : arr){ }
НЕ переводится на
if (arr!=null){
for (int i = 0; i < arr.length; i++) {
}
}
and
if (arr!=null){
for (Iterator<type> iter = arr.iterator(); iter.hasNext(); ){
type var = iter.next();
}
}
Включить выражение arr!= null может уменьшить вложенность кода.