07 October 2005

好久沒寫了... 原因是很懶...

anyway, 最近買了 Joshua Bloch (Effective Java 作者) 的新書 Java Puzzlers。呵,這本書收集了大量 Java 中可能出現的陷阱,看的真是讓人眼花瞭亂,驚奇不斷,像是一個最簡單的:

    long sum = 12345 + 5432l ;

結果 sum 是 17777 ! 有興趣的朋友請自行測試一下。不過,你有可能測不出同樣的結果。而這正是這本書的風格 -- 書中 "斷章取義" 截取一段 code 出來,讓你研究問題是出在哪。這個點子不錯,也很有趣,不過 "實不實用" 就是另外一回事了,有些 puzzle 其實只要看前後的 code 就不算 puzzle 了,而他只截一段出來... 給我的感覺比較像是在考試... 另外,也有些 puzzle 在強大的 IDE 的幫助下,IDE 會即使的反應會有問題... 所以個人覺得看這本書可以增進一些基礎知識,不過實務上並不會有立時的效果。

來,我們再來考一題,這一題是我覺得比較有用的 (IDE 抓不出)

public void copy() throws IOException {
    InputStream in = null;
    OutputStream out = null;
    try {
        in = new FileInputStream("foo");
        out = new FileOutputStream("bar");
        // some code...
        // read from in and write to out....
    } finally {
        if (in != null) {
            in.close();
        }
        if (out != null) {
            out.close();
        }
    }
}

看得出問題嗎?如果研究不出來,快去買一本吧 ;-)