Thinking in Java 4th Edition - What is classname.this.method()
java
Solution
`CoffeeGenerator.this` allows access to the outer class `CoffeeGenerator` from the inner class `CoffeeIterator`
JLS 15.8.4 describes this as a qualified this
Any lexically enclosing instance (§8.1.3) can be referred to by explicitly qualifying the keyword this.
Read: Inner classes
Problem
Reading "Thinking in Java 4th Edition" i found that example in 14th chapter: ``` 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(); } } ``` And i noticed that i never faced with that construction: ``` return CoffeeGenerator.this.next(); ``` What does this mean? I know about ClassName.class.Method(), but what does this mean?