2015-07-03 25 views
5

stavo leggendo Collezioni Da The Complete Reference e poi ho incontrato questa dichiarazionecome è possibile utilizzare il per-ogni ciclo per le classi che non implementano Iterable

L'interfaccia per la raccolta

L'interfaccia Collection è la base su cui è stato creato il framework Collections perché deve essere implementato da qualsiasi classe che definisce una raccolta. Collection è un'interfaccia generica con questa dichiarazione : interface Collection<E>. Qui, E specifica il tipo di oggetti che la raccolta manterrà. Collection estende l'interfaccia Iterable . Ciò significa che tutte le raccolte possono essere passate attraverso l'uso dello stile for-one per ciclo ( ). (Ricorda che solo le classi che implementano Iterable da Iterable possono essere attivate dal for).

Nelle ultime due righe, è scritto che solo le classi che implementano l'interfaccia Iterable possono essere pedinate attraverso il ciclo for. Ma, suppongo che la classe oggetto non implementa l'interfaccia iterabile, quindi come possiamo usare il ciclo for-each in caso di stringhe, interi ecc.

+0

'Ricorda che solo le classi che implementano Iterable possono essere passate in rassegna con il for. And Arrays, non dimentichiamoci degli array. – biziclop

risposta

5

Questo è vero. java.lang.Object non implementa l'interfaccia Iterable<T>.

Possiamo scorrere gli oggetti perché il proprietario dell'oggetto (ad esempio Collection) implementa automaticamente lo Iterable<T>, non necessariamente la parte di oggetti della raccolta.

+0

@ Crazyjavahcking-Oh ,,, capito amico. –

+0

Perché così tanto testo in grassetto? – Puce

3

Se si sta iterando attraverso una raccolta di stringhe, o numeri interi, è la collezione che è iterabile, non la stringa o il numero intero. Gli elementi nell'iterazione non devono essere iterabili; il contenitore fa.

3

Non vorrai mai ripetere un intero, né potresti mai fare una cosa del genere. Un intero è una singola entità, mentre l'interfaccia iterabile è in riferimento a una colletta di entità. Ad esempio:

List<Integer> intList = new ArrayList<Integer>(); 

for (Integer i : intList) { 
    System.out.println(i); 
}