Readable接口就是为了Scanner类专门创建的一个接口,使得Scanner的入口参数不必限于某个类。实现Readable接口要只需是实现public int read(CharBuffer cb)方法。当方法返回-1时候Scanner类停止读取。package com.liuc.test.think.chapter9;
import java.io.IOException;
import java.nio.CharBuffer;
import java.util.Random;
import java.util.Scanner;
public class RandomWords implements Readable{
private Random rand=new Random(47);
private static final char[] capitals="ABCDEFGHIJKLMOPQRSTUVWXYZ".toCharArray();
private static final char[] lowers="ABCDEFGHIJKLMOPQRSTUVWXYZ".toLowerCase().toCharArray();
private static final char[] vowels="aeiou".toCharArray();
private int count;
public RandomWords(int count) {
this.count=count;
}
@Override
public int read(CharBuffer cb) throws IOException {
if (count--==0) {
return -1;
}
cb.append(capitals[rand.nextInt(capitals.length)]);
for (int i = 0; i < 4; i++) {
cb.append(vowels[rand.nextInt(vowels.length)]);
cb.append(lowers[rand.nextInt(lowers.length)]);
}
cb.append(" ");
return 10;
}
public static void main(String[] args) {
Scanner scanner=new Scanner(new RandomWords(10));
while (scanner.hasNext()) {
System.out.println(scanner.next());
}
}
}