代码说明
package com.lh.innerclass;public class Sequence { //使本接口定义外部化 static interface Selector{ //判断当前指针是否指向末尾 boolean end(); //返回当前指针指向的对象 Object current(); //指针移到下一位 void next(); } //本成员变量被内部类无条件调用了 private Object[] items; private int next; public Sequence(int size) { this.items = new Object[size];// next = 0; } public void add(Object object){ if(this.next < this.items.length){ items[next++] = object; } } //创建内部类的实例,返回给外部使用! public Selector selector(){ return new SequenceSelector(); } //内部类(私有) private class SequenceSelector implements Selector{ private int i = 0; public boolean end() { return i == items.length; } public Object current() { return items[i]; } public void next() { if(i < items.length){ i++; } } } //程序入口 public static void main(String[] args) { int size = 10; Sequence sequence = new Sequence(size); Selector selector = sequence.selector(); for(int i = 0; i < size; i++){ sequence.add(i); } while(!selector.end()){ System.out.println(selector.current()); selector.next(); } }}