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

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

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

變量捕獲

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

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

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

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都有一個(gè)特性,即只通過(guò)參數(shù)與返回值與外部交互:

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

    網(wǎng)友評(píng)論