作者lordfish62 (阿瑜)
看板java
标题[问题] Thinking in Java 4th 的一个范例
时间Mon Jul 21 20:24:57 2014
完整程式码如下:
import java.nio.*;
import java.util.*;
public class RandomWords implements Readable
{
private static Random rand = new Random(47);
private static final char[] capitals =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
private static final char[] lowers =
"abcdefghijklmnopqrstuvwxyz".toCharArray();
private static final char[] vowels =
"aeiou".toCharArray();
private int count;
public RandomWords(int count) { this.count = count; }
public int read(CharBuffer cb)
{
if(count-- == 0)
return -1; // Indicates end of input
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; // Number of characters appended
}
public static void main(String[] args)
{
Scanner s = new Scanner(new RandomWords(10));
while(s.hasNext())
System.out.println(s.next());
}
}
输出:
Yazeruyac
Fowenucor
Goeazimom
Raeuuacio
Nuoadesiw
Hageaikux
Ruqicibui
Numasetih
Kuuuuozog
Waqizeyoy
public int read(CharBuffer cb) 是implement Readable来的,
RandomWords的constructor没有呼叫它,
也没有看到呼叫Readable的constructor
我的疑问是它在哪里被呼叫的呢?
麻烦版上朋友的帮我解惑了,谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.133.120.146
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/java/M.1405945500.A.8A9.html
1F:→ pzyc79:s.next() -> n = source.read(buf); source就是RandomWord 07/21 20:35
2F:→ lordfish62:感谢,我去找code来看 07/22 00:46