先贴代码:
interface Selector {
  boolean end();
  Object current();
  void next();
} 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 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 Selector selector() {
    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));
    Selector selector = sequence.selector();
    while(!selector.end()) {
      System.out.print(selector.current() + " ");
      selector.next();
    }
  }
}然后截取书上的一段话,“最初看到SequenceSelector,可能会觉得它只不过是另一个内部类罢了。但请仔细观察它,注意方法end()、current()和next()都用到了objects,这是一个引用,它并不是SequenceSelector的一部分,而是外围类中的一个private字段。”  这里3个方法除了current()是用到object,其他2个哪里用到了?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【llm0528】截止到2008-07-26 21:01:04的历史汇总数据(不包括此帖):
    发帖的总数量:61                       发帖的总分数:1260                     每贴平均分数:20                       
    回帖的总数量:53                       得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:60                       结贴的总分数:1240                     
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:1                        未结的总分数:20                       
    结贴的百分比:98.36 %               结分的百分比:98.41 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    值得尊敬
      

  2.   

    这里说的Objects是指的一个数组。items。
    但是我很奇怪,这不是内部类是什么?这不是一个实现了接口的内部类么?
      

  3.   

    外部类的 private Object[] items;
    定义了items变量。 public boolean end() { return i == items.length; }
     public void next() { if(i < items.length) i++; }
    这两内部类的方法都用到了外部类的items变量。
    内不类拥有操作外部内的所有权限的变量,包括privae的,
    这就是内部类的特殊地方
      

  4.   

    呵呵,这段代码取自 大名鼎鼎的“Thinking in Java 第四版” 声明:1、我没打错字 2、我买的非盗版,绝对正版书
      

  5.   

    楼上正解。SequenceSelector是一个内部类。但是,他的用法不像通常的用法而已。
      

  6.   

    是内部类.
    把书名贴一下.
    很多书上的东西未必是准确的.
    今天翻了一本书<java-JDK.数据库系统开发.Web开发>
    作者把Overriding翻译成重载.把Overloading翻译成过载,不知道从哪抄的,把我郁闷坏了.
      

  7.   

    这段代码在“Thinking in Java 第四版”的 P192页
      

  8.   

    这个例子就是为了说明内部类可以访问外部类中的methods和fields,并不是说这不是一个内部类.
    However,the inner class can access methods and fields from the enclosing class as if it owned them.This turns out to be very
    conenient,as you can see in the preceding example.
    这是你说的那段的最后两句.