Think in Java version 4 – what is classname this. method()

Reading "thinking in Java 4th Edition", I found this example in Chapter 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();
  }
}

I noticed that I had never encountered such a structure:

return CoffeeGenerator.this.next();

What's the meaning of this? I know classname class. Method (), but what does that mean?

Solution

CoffeeGenerator. This allows access to the external class coffeeegenerator from the internal class coffeeeiterator

JLS 15.8. 4 describe this as qualified

Reading: inner classes

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>