问题描述
- 求解答:java小程序执行过程
-
package chap14;import java.util.*;
interface Generator {
T next();
}class Coffee {
private static long counter = 0;
private final long id = counter++;public String toString() { return getClass().getSimpleName() + " " + id; }
}
class Latte extends Coffee {
}class Mocha extends Coffee {
}class Cappuccino extends Coffee {
}class Americano extends Coffee {
}class Breve extends Coffee {
}public class CoffeeGenerator implements Generator, Iterable {
private Class[] types = { Latte.class, Mocha.class, Cappuccino.class,
Americano.class, Breve.class, };
private static Random rand = new Random(47);public CoffeeGenerator() { } // For iteration: private int size = 0; public CoffeeGenerator(int sz) { size = sz; } public Coffee next() { try { return (Coffee) types[rand.nextInt(types.length)].newInstance(); // Report programmer errors at run time: } catch (Exception e) { throw new RuntimeException(e); } } class CoffeeIterator implements Iterator<Coffee> { int count = size; public boolean hasNext() { System.out.println(count); return count > 0; } public Coffee next() { count--; return CoffeeGenerator.this.next(); } public void remove() { // Not implemented throw new UnsupportedOperationException(); } }; public Iterator<Coffee> iterator() { return new CoffeeIterator(); //return new CoffeeGenerator(); } public static void main(String[] args) { CoffeeGenerator gen = new CoffeeGenerator(); for (int i = 0; i < 5; i++) System.out.println(gen.next()); for (Coffee c : new CoffeeGenerator(5)) //for (Coffee c : gen.iterator()) System.out.println(c); }
}
解决方案
这个是啥。。。给点注释
解决方案二:
这个够乱的。。。
主要是把子类打印的过程吧。
至于模式应该是:策略模式
不知有没有答错,大神指点。。
解决方案三:
最后一个for循环不对吧
时间: 2024-08-29 08:16:44