Think in Java version 4 – what is classname this. method()
•
Java
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
二维码