加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在Java第4版中思考 – 什么是classname.this.method()

发布时间:2020-12-15 04:42:47 所属栏目:Java 来源:网络整理
导读:阅读“Thinking in Java 4th Edition”我在第14章中找到了这个例子: public class CoffeeGeneratorimplements GeneratorCoffee,IterableCoffee { private Class[] types = { Latte.class,Mocha.class,Cappuccino.class,Americano.class,Breve.class,}; priv
阅读“Thinking in Java 4th Edition”我在第14章中找到了这个例子:

public class CoffeeGenerator
implements Generator<Coffee>,Iterable<Coffee> {
  private Class[] types = { Latte.class,Mocha.class,Cappuccino.class,Americano.class,Breve.class,};
  private static Random rand = new Random(47);
  public CoffeeGenerator() {}
  private int size = 0;
  public CoffeeGenerator(int sz) { size = sz; } 
  public Coffee next() {
    try {
      return (Coffee)
        types[rand.nextInt(types.length)].newInstance();
    } catch(Exception e) {
      throw new RuntimeException(e);
    }
  }
  class CoffeeIterator implements Iterator<Coffee> {
    int count = size;
    public boolean hasNext() { return count > 0; }
    public Coffee next() {
      count--;
      return CoffeeGenerator.this.next();
    }
    public void remove() {
      throw new UnsupportedOperationException();
    }
  };    
  public Iterator<Coffee> iterator() {
    return new CoffeeIterator();
  }
}

我注意到我从未遇到过这种结构:

return CoffeeGenerator.this.next();

这是什么意思?我知道ClassName.class.Method(),但这是什么意思?

解决方法

CoffeeGenerator.this允许从内部类CoffeeIterator访问外部类CoffeeGenerator

JLS 15.8.4将此描述为合格的

Any lexically enclosing instance (§8.1.3) can be referred to by explicitly qualifying the keyword this.

阅读:Inner classes

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读