⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 storycharactergenerator.java

📁 JAVA编程思想第四版英文原版习题答案. pdf原版的
💻 JAVA
字号:
// generics/storyCharacters/StoryCharacterGenerator.java
// TIJ4 Chapter Generics, Exercise 8, page 631
/* Following the form of the Coffee example, create a hierarchy of StoryCharacter(s) from 
* your favorite movie, dividing them into GoodGuy(s) and BadGuy(s). Create a generator
* for StoryCharacter(s), following the form of CoffeeGenerator.

/* Solution includes, in same package, generics.storyCharacters:
* public class StoryCharacter {
*  	private static long counter = 0;
*  	private final long id = counter++;
*  	public String toString() {
*    		return getClass().getSimpleName() + " " + id;
*  	}
* }
* public class GoodGuy extends StoryCharacter {}
* public class LukeSkywalker extends GoodGuy {}
* public class Yoda extends GoodGuy {}
* public class BadGuy extends StoryCharacter {}
* public class DarthVader extends BadGuy {}
* public class JabbaTheHut extends BadGuy {}
*/

package generics.storyCharacters;
import java.util.*;
import org.greggordon.util.*;

public class StoryCharacterGenerator 
	implements Generator<StoryCharacter>,  Iterable<StoryCharacter> {
	private Class[] types = { DarthVader.class, JabbaTheHut.class, 
		LukeSkywalker.class, Yoda.class };
	private static Random rand = new Random();
	public StoryCharacterGenerator() {}
	// For iteration:
	private int size = 0;
	public StoryCharacterGenerator(int sz) { size = sz; }
	public StoryCharacter next() {
		try {
			return 
			(StoryCharacter)types[rand.nextInt(types.length)].newInstance();
		// Report programmer errors at run time:
		} catch(Exception e) {
			throw new RuntimeException(e);
		}
	}	
	class StoryCharacterIterator implements Iterator<StoryCharacter> {
		int count = size;
		public boolean hasNext() { return count > 0; }
		public StoryCharacter next() {
			count--;
			return StoryCharacterGenerator.this.next();
		}
		public void remove() { // Not implemented
			throw new UnsupportedOperationException();
		}
	}
	public Iterator<StoryCharacter> iterator() {
		return new StoryCharacterIterator();
	}
	public static void main(String[] args) {
		StoryCharacterGenerator gen = new StoryCharacterGenerator();
		for(int i = 0; i < 5; i++)
			System.out.println(gen.next());
		for(StoryCharacter s : new StoryCharacterGenerator(5))
			System.out.println(s); 
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -