for/in 循環(huán)通常叫作增強(qiáng)的 for 或者 foreach,它是 java 5.0 中一個(gè)極為方便的特性。實(shí)際上它沒(méi)有提供任何新的功能,但它顯然能讓一些日常編碼任務(wù)變得更簡(jiǎn)單一些。在本文中,您將學(xué)習(xí)這方面的許多內(nèi)容,其中包括使用 for/in 在數(shù)組和集合中進(jìn)行遍歷,以及如何用它避免不必要(或者只是令人厭煩的)類型轉(zhuǎn)換。您還將學(xué)習(xí)如何實(shí)現(xiàn) for/in,了解新的 Iterable 接口的一些細(xì)節(jié),甚至還將學(xué)習(xí)如何讓您自己的定制對(duì)象用這個(gè)新的構(gòu)造進(jìn)行遍歷。最后,您將學(xué)習(xí) for/in 不能 做什么,以確保您能理解什么時(shí)候選擇原來(lái)的 for 是正確的選擇。
越短越好 這是資深電腦程序員都知道的一條最基本的原理:因?yàn)楦?意味著打字更少,所以更短自然也就更好。這個(gè)哲學(xué)造就了 vi 這樣的 IDE,在這類 IDE 中,像 :wq! 和 28G 這樣的命令擁有豐富的含義。這個(gè)哲學(xué)還導(dǎo)致一些最神秘的代碼,比如說(shuō),變量 ar 代表 Agile Runner(也可能是 Argyle,或者 Atomic Reactor 等等,總之,您明白就好)。
有些時(shí)候,在努力實(shí)現(xiàn)短小的時(shí)候,程序員會(huì)將明確性拋到腦后。也就是說(shuō),過(guò)于短小和過(guò)于繁冗的代碼都會(huì)讓人感到痛苦不堪。變量名為 theAtomicReactorLocatedInPhilaDelphia 與名為 ar 的變量一樣讓人討厭和不方便。一定會(huì)有一個(gè)讓人興奮的解決方法,不是嗎?
這個(gè)讓人興奮的方法(至少我是這么認(rèn)為的)是以尋找完成某事的方便 途徑為出發(fā)點(diǎn),不是為了短小而短小。作為這類解決方案的一個(gè)好例子,Java 5.0 引入了新版的 for 循環(huán),我把它稱為 for/in。它也被稱為 foreach,有時(shí)也叫作增強(qiáng)的 for,但這些指的都是同一個(gè)構(gòu)造。不管您叫它什么,for/in 都會(huì)使代碼變得更簡(jiǎn)單,正如您在本文中將看到的那樣。
for/in 因何得名 細(xì)心的讀者會(huì)注重到,所謂 for/in 根據(jù)不包含單詞 in。它的名字來(lái)自借閱的閱讀方式。在清單 2 中,您會(huì)說(shuō) for 每個(gè)對(duì)象 in 命名變量列表中,執(zhí)行 ...。當(dāng)然,省略號(hào)代表循環(huán)實(shí)質(zhì)做的操作。您如何看待會(huì)有些差異,但是在每種表達(dá)方式中 for 和 in 都是突出的。