Java pour chaque boucle de jeter NullPointException

La suite de java, le secteur du résultat d'un NullPointException, depuis la liste des variables est nulle, ce qui est de la passer à la boucle for-each.

List<> arr = null;
for (Object o : arr) {
    System.out.println("ln "+o);
}

Je pense que for (Object o : arr){ } est un équivalent à

for (int i = 0; i < arr.length; i++) { }

et/ou

for (Iterator<type> iter = arr.iterator(); iter.hasNext(); ){ 
   type var = iter.next(); 
}

Dans les deux cas, arr est null cause arr.longueur ou arr.iterator() renvoie une NullPointException

Je suis juste curieux de savoir la raison pour laquelle for (Object o : arr){ } n'est PAS de traduire des

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(); 
    }
}

Inclure arr!=nulle expression pourrait réduire code de nidification.

Si vous savez que arr n'est pas null déjà, ne serait-il pas passer par une inutile supplémentaire null vérifier? Je suppose que c'est aucun.
Je ne vois pas une raison de vouloir effectuer une itération sur un connu null liste, bien que. Pourquoi un null case à être à l'initiative renforcée pour la boucle, par opposition à la liste tout simplement jamais être null avant de l'itération?
J'avais supposé que le "connu null liste" était juste pour expliquer le comportement de la question

OriginalL'auteur Linlin | 2013-04-28