// CommunicationTest.java // To test the communication of // outter class and inner class. package blog.pdcxs007.innerClass; interface selector { boolean hasNext(); Object current(); int next(); } class Sequence { private int size; private Object[] sq; private int cur = 0; public Sequence(int sz) { size = sz; sq = new Object[sz]; } public void add(Object obj) { if (cur < size) sq[cur++] = obj; } class sl implements selector { private int cur = 0; public boolean hasNext() { return cur < size; } public Object current() { //System.out.println("In selector.current()"); privatePrintCur(this); //System.out.println("Out"); return sq[cur]; } public int next() { return cur++; } } public selector getSelector() { return new sl(); } public void printCur(sl slc) { System.out.println("Current is: " + slc.cur); } private void privatePrintCur(sl slc) { System.out.println("Current is: " + slc.cur); } } public class CommunicationTest { public static void main(String[] args) { Sequence sq = new Sequence(5); selector slc = sq.getSelector(); for(int i = 0; i < 5; i++) sq.add(Integer.toString(i)); while(slc.hasNext()) { System.out.println(slc.current()); sq.printCur((Sequence.sl) slc); slc.next(); } } }运行结果如下:
原文:http://blog.csdn.net/pdcxs007/article/details/19291481