好久沒寫了... 原因是很懶...
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(); } } }
看得出問題嗎?如果研究不出來,快去買一本吧 ;-)