開學(xué),上了兩天感覺課好多,學(xué)校現(xiàn)在還停水,宿舍網(wǎng)絡(luò)也還沒通,簡直爆炸,感覺能靜下心看書的時間越來越少了...寒假還有些看過書之后的存貨,現(xiàn)在寫一點發(fā)出來。加上假期兩個月左右都過去了書才看了1/7都不到...還得去續(xù)借一下,看來買書多看書少的毛病也得改一改,先致力于把剁手買的書啃完。

另外再次推薦下我現(xiàn)在看的這本書(詳見第0篇),越看越費勁...干貨非常多而且特別干,總之相比于其他書可以說是一頁頂三頁了,每一段都值得仔細(xì)琢磨,發(fā)現(xiàn)看不懂的還得調(diào)轉(zhuǎn)方向先去填坑。

接上一篇:初探Lambda表達(dá)式/Java多核編程【3】Lambda語法與作用域

變量捕獲

當(dāng)使用匿名內(nèi)部類并去實現(xiàn)其中的接口時,更多時候我們不會去訪問定義在外部的變量,反而更加傾向于將其寫成類似于靜態(tài)方法的一種“函數(shù)”。

就如同前文中所舉的鍵提取器、鍵比較器之類的例子,作為單純的行為(如Math類中的那些靜態(tài)方法),不需要引入或操作任何外部量就能夠達(dá)到目的。

同時在上一篇文章中我們也對Lambda之于外部變量的訪問與繼承有了粗淺的了解,書中這一小節(jié)的內(nèi)容將使我們用更專業(yè)的術(shù)語來表述這一問題。

DoubleUnaryOperator doubleUnaryOperator = x -> Math.abs(x);
Stream.of(-0.1, 0.2, -0.3, 0.4, -0.5)
        .map(e -> doubleUnaryOperator.applyAsDouble(e))
        .forEach(e -> System.out.println(e));

此段代碼中出現(xiàn)的所有Lambda都有一個特性,即只通過參數(shù)與返回值與外部交互:

  • x -> Math.abs(x) 接收

    網(wǎng)友評論