Ola pessoa, boa noite
!! bom já tem um tempo que estou usando o for extendido com arrays mas me perguntei por que passei a utiliza-lo no lugar iterator, não pensei duas vezes em responder essa resposta, praticidade 8) .
Iterator<String> iter = getters.iterator();
while (o1 != null && o2 != null && iter.hasNext()) {
String getter = iter.next();
}
...
for(String getter : getters) {}
menha pergunta é, exite alguma direfença direta entre os dois, alguma boa pratica ou expecificação direta entre o uso de um e outro?
ok, desde já agradeço e até mas ![:smiley: :smiley:](https://www.guj.com.br/images/emoji/twitter/smiley.png?v=9)
São equivalentes. Isso é tudo synthatic sugar.
Iterable<Cachorro> matilha = ...
for (Cachorro c : matilha) {
// faz qualquer coisa aqui
}
o compilador transforma em algo mais ou menos assim:
Iterable<Cachorro> matilha = ...
{
Iterator<Cachorro> $i1 = matilha.iterator();
if ($i1.hasNext()) {
for (Cachorro c = $i1.next(); $i1.hasNext(); c = $i1.next()) {
// faz qualquer coisa aqui
}
}
}
No caso de arrays, ele faz algo parecido também.
É interessante utilizar-se o for aprimorado quando possível, porque deixa o design pattern mais transparente, o que significa código mais limpo, mais legível e menos propenso a erros de codificação.
Então, o que fiz foi trocar seis por meia-duzia ![:wink: :wink:](https://www.guj.com.br/images/emoji/twitter/wink.png?v=9)
Muito obrigado pela resposta!!! 8)