title: 通過(guò)IntelliJ IDEA 2016.3 來(lái)更好使用Java 8的Stream API
categories: 基礎(chǔ)
tags: Java 8
keywords: Java 8 Streams IDEA
本文展示了IntelliJ IDEA如何幫助編寫正確的和培養(yǎng)使用Java 8的習(xí)慣,版本使用IntelliJ IDEA 2016.3缠劝, 通過(guò)擴(kuò)展了IDEA現(xiàn)有的檢查以支持這些的案例岭洲。
現(xiàn)在钧萍,如果在上面定義的局部變量的循環(huán)遞增中單擊Alt + Enter癣漆,IDE將提示您使用以count()結(jié)尾的一系列steam的鏈?zhǔn)?API調(diào)用來(lái)替換它舌劳。 注意放坏,如果循環(huán)是嵌套的纠脾,IDE將使用flatMap():
如果變量從另一個(gè)方法返回的數(shù)字增加孩哑,IDE將使用mapToInt()/ mapToLong()/ mapToDouble():
如果循環(huán)將非原始對(duì)象添加到集合中栓霜,而不是遞增變量,IDE將用以collect()結(jié)尾的調(diào)用鏈替換它:
如果要添加到集合的對(duì)象是另一種方法的結(jié)果横蜒,IDE將使用map()以慣用的方式處理它:
這些檢查所支持的代碼細(xì)節(jié)多么胳蛮? 相當(dāng)多。 考慮一個(gè)大量使用continue語(yǔ)句的循環(huán):
與continue類似丛晌,IDE也將使用anyMatch()正確處理返回語(yǔ)句:
如果您決定使用這些檢查仅炊,請(qǐng)務(wù)必調(diào)整默認(rèn)代碼樣式設(shè)置,以避免超過(guò)長(zhǎng)方法鏈的右邊距澎蛛。 在此抚垄,你有一個(gè)選擇,根據(jù)你的喜好來(lái)設(shè)置谋逻。
- 下拉鏈(Chop down chain)方法調(diào)用如果它們很長(zhǎng)(最適合Java 8)
- 包裝方法( Wrap method )參數(shù)調(diào)用
目前我們正在考慮更改這些默認(rèn)值呆馁。
默認(rèn)情況下啟用檢查,但其檢查級(jí)別設(shè)置為最小 - 這意味著沒(méi)有警告毁兆。 這是IntelliJ IDEA 2016的另一個(gè)新功能浙滤。
您可以在“設(shè)置”中更改任何檢查的級(jí)別:
如果需要,您可以在你選擇的范圍上以批處理模式來(lái)應(yīng)用這些檢查:
我們希望新的檢查將幫助并使你的Java 8代碼寫更加得心應(yīng)手荧恍,并充分利用stream API瓷叫。 那些不熟悉stream API的人屯吊,請(qǐng)務(wù)必閱讀Oracle的教程:第1部分和第2部分。
最后但并非最不重要的摹菠,IDEA還在努力改進(jìn)VCS Log的布局:
- 提交詳細(xì)信息已移至右側(cè)盒卸,為日志本身提供了更多空間。
- 表中的提交消息現(xiàn)在對(duì)齊次氨,因此更易讀蔽介。
關(guān)于Java 8 Stream API 的使用,請(qǐng)參考本人的博文:
更多干貨內(nèi)容請(qǐng)關(guān)注:極樂(lè)科技