interface Iterator<E> { E next(); boolean hasNext(); } interface List<E> { void add(E x); Iterator<E> iterator(); } class StupidList<E> implements List<E> { private E e; public void add( E e ){ this.e = e; } public Iterator<E> iterator(){ return new Iterator<E>(){ public E next(){ return e; } public boolean hasNext(){ return true; } }; } } class G4 { public static void main( String[] args ){ StupidList<String> sList = new StupidList<String>(); sList.add("Cool stuff"); Iterator<String> it1 = sList.iterator(); while( it1.hasNext() ){ String s = it1.next(); System.out.println(s); } for( Iterator<String> it2 = sList.iterator(); it2.hasNext(); ){ String s = it2.next(); System.out.println(s); } } }