IterableClass.java
import java.util.Iterator; import java.util.LinkedList; public class IterableClass implements Iterable { public IterableClass() { lt= new LinkedList<Integer>() ; lt.add(1) ; lt.add(2) ; lt.add(3) ; } public Iterator<Integer> iterator() { return lt.iterator() ; } private LinkedList<Integer> lt ; }
Main.java
import java.util.Iterator; public class Main { /** * @param args */ public static void main( String[] args ) { IterableClass ic= new IterableClass() ; // V1 : compile et fonctionne :) System.out.println("V1 :") ; for ( Iterator iter= ic.iterator() ; iter.hasNext() ; ) { Integer e= (Integer)iter.next() ; System.out.println(e.toString()) ; } // V2 : compile et fonctionne :) System.out.println("V2 :") ; for ( Iterator<Integer> iter= ic.iterator() ; iter.hasNext() ; ) { Integer e= iter.next() ; System.out.println(e.toString()) ; } // V3 : ne compile même pas ! #rage# System.out.println("V3 :") ; for ( Integer i : ic ) System.out.println(i.toString()) ; } }
[IMG]http://img480.imageshack.us/img480/9886/pbiterator9ny.png[/IMG]
le problème se situe dans la version 3, elle refuse de compiler, alors qu'il me semble pourtant que c'est théoriquement équivalent à l'écriture de la version 2.... si vous avez une idée, je suis preneur...
