interface List {
  public void add (Object x);
  public Iterator iterator ();
}
interface Iterator {
  public Object next ();
  public boolean hasNext ();
}
class LinkedList implements List { ... }
class Test {
  public static void main (String[] args) {

    // byte list
    List xs = new LinkedList();
    xs.add(new Byte(0)); xs.add(new Byte(1));
    Byte x = (Byte)xs.iterator().next();

    // string list
    List ys = new LinkedList();
    ys.add("zero"); ys.add("one");
    String y = (String)ys.iterator().next();

    // string list list
    List zss = new LinkedList();
    zss.add(ys);
    String z = (String)((List)zss.iterator().next()).iterator().next();

    // string list treated as byte list
    Byte w = (Byte)ys.iterator().next();  // run-time exception
  }
}

Example 1: List and iterator interfaces.

Back to Article