1:设计一接口:
package 编程思想内部类.v1.拥有外类所有元素访问权;
public interface ISelector {
boolean end(); Object current(); void next();}
2:编写类实现迭代器设计模式:
package 编程思想内部类.v1.拥有外类所有元素访问权;
public class Sequence {
private Object []items; private int next=0; public Sequence(int size) { items=new Object[size]; } public void add(Object x){ if(next<items.length){ items[next++]=x; } } private class SequenceSelector implements ISelector{ private int i=0; @Override public Object current() { return items[i]; }
@Override public boolean end() { return i==items.length; }
@Override public void next() { if(i<items.length)i++; } } public ISelector getSelector(){ return new SequenceSelector(); } public static void main(String[] args) { Sequence sequence = new Sequence(10); for (int i = 0; i < 10; i++) sequence.add(Integer.toString(i)); ISelector iSelector = sequence.getSelector(); while(!iSelector.end()){ System.out.print(iSelector.current()+" "); iSelector.next(); } } }说明:设计的接口来检查序列是否到末尾【end()】,访问当前对象【current()】,移动到序列的下一个对象【next()】.别的类可以按它们自己的方式来实现这个接口。
、、、、、、、、、、、、内部类
它也是一个内部类:
内部类可以访问其外围类的方法和字段,就像它们自己拥有似的。
怎么做到的呢?
当某个外围类对象的对象创建了一个内部类对象时,此内部类对象必定会秘密地捕获一个指向那个外围类对象引用。