//生成器 public interface Generator<T>{ T next(); } //Coffee.java public class Coffee{ private static long counter = 0; private final long id =counter++; public String toString(){ return getClass().getSimpleName()+" "+id; } } //繼承coffee 的類 public class Latte extends Coffee{} public class Mocha extends Coffee{} //實現Gernerator<Coffee>接口 import java.util.*; public class CoffeeGenerator implements Generator<Coffee>,Iterable<Coffee>{ private Class[] types={Latte.class,Mocha.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(); } public static void main(String[] args) { CoffeeGenerator gen =new CoffeeGenerator(); for (int i =0;i<2 ;i++ ) System.out.println(gen.next()); //我去,輸出的gen.next();形成數字是 0 1 3 5,改爲c,就是 0 1 2 3。 for (Coffee c:new CoffeeGenerator(2)) System.out.println(gen.next()); } } 結果: Mocha 0 Latte 1 Latte 3 Mocha 5 求教:爲何上述數字不是0 1 2 3?