Java – Guida al costrutto “for-each”

L’uscita di Java 5, avvenuta nel lontano 2004, aveva portato un gran numero di novità molto importanti tra cui i generics, le annotation, le enum e svariate altre funzionalità. Tra queste novità c’è stata anche la introduzione di un nuovo tipo di ciclo “for” che nella documentazione ufficiale è denominato enhanced for (“for migliorato”) ma viene generalmente chiamato in maniera più amichevole e informale for-each (o senza trattino, for each). Questo termine, tra l’altro, è usato anche in altri linguaggi e contesti quindi è facilmente riconoscibile e comprensibile.

L’obiettivo di questa guida è di fornire una valida e solida conoscenza di questo costrutto. Dato che la trattazione sarà (volutamente) un pochino lunga, ho deciso di suddividere questa guida in più articoli distinti, in modo da rendere i singoli concetti più facilmente leggibili e “digeribili”.

I prossimi articoli di questa guida saranno quindi:

  • Guida al costrutto “for-each”: introduzione
    In questo articolo fornirò una introduzione al costrutto for-each descrivendo anche la sua forma generale. È quindi un articolo molto “discorsivo” ma serve appunto come base che sarà fondamentale per il resto della guida.

  • Guida al costrutto “for-each”: gli array
    In questo articolo descriverò l’utilizzo del costrutto for-each per iterare sugli array.

  • Guida al costrutto “for-each”: gli oggetti Iterable
    In questo articolo descriverò l’utilizzo del costrutto for-each per iterare sugli oggetti che implementano la interfaccia Iterable.

Nei successivi due articoli descriverò cosa si deve fare per implementare la interfaccia Iterable all’interno di una propria classe. Si tratta di situazioni “particolari” ma in certi casi la possibilità di rendere una propria classe “iterabile” potrebbe risultare molto utile/interessante. Gli articoli sono due distinti perché descriverò due approcci differenti a seconda di cosa contiene la classe.

  • Guida al costrutto “for-each”: implementare Iterable (1)
    In questo articolo descriverò, con un esempio completo, come implementare Iterable sfruttando però l’iteratore di una collezione del framework.

  • Guida al costrutto “for-each”: implementare Iterable (2)
    In questo articolo descriverò, con un esempio completo, come implementare Iterable dovendo anche implementare un iteratore per scorrere un array.

Nota finale: l’utilizzo della interfaccia Iterable richiede la conoscenza dei generics. Per comprendere gli articoli di questa guida su Iterable comunque non è necessario avere una conoscenza “avanzata” dei generics. È invece sufficiente sapere almeno cosa vuol dire trattare tipi (classi/interfacce) “generici” e come usare le collezioni del framework in maniera parametrizzata (almeno per le collezioni più basilari come ArrayList).