重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設、域名注冊、服務器等服務
為企業(yè)提供網(wǎng)站建設、域名注冊、服務器等服務
前言
Java 8 的 Lambda 特性較之于先前的泛型加入更能鼓舞人心的,我對 Lambda 的理解是它得以讓 Java 以函數(shù)式思維的方式來寫代碼。而寫出的代碼是否是函數(shù)式,并不單純在包含了多少 Lambda 表達式,而在思維,要神似。
實際中看過一些代碼,為了 Lambda 表達式而 Lambda(函數(shù)式),有一種少年不識愁滋味,為賦新詞強說愁的味道。從而致使原本一個簡單的方調用硬生生的要顯式的用類如 apply(), accept(obj) 等形式。不僅造成代碼可讀性差,且可測試性也變壞了。
為什么說的是快樂的使用 Java 8 的 Lambda 呢?我竊以為第一個念頭聲明 Lambda 表達式為實例/類變量(像本文第一段代碼那樣),而不是方法的,一定會覺得如此使用方式很快樂的。所謂獨樂樂,不如眾樂樂;獨樂樂,眾不樂定然是更大的快樂; 更極致一些,不管什么時候必須是:我快樂,所以你也快樂。
一方面也在于 Java 還沒有進化到 JavaScript 或 Scala 那樣的水平,JavaScript 的函數(shù)類型變量,不一定要用 apply 或 call, 直接括號就能實現(xiàn)方法調用。Scala 的函數(shù)類型用括號調用也會自動匹配到 apply 或 update 等方法上去。
看下面的樣本代碼
public class Account { public BiFunctionfullName = (firstName, lastName) -> { //some logic, i.e. logics of fullName in different countries return firstName + " " + lastName; }; public String getName() { String firstName = "Speaker"; String lastName = "Wolf"; return fullName.apply(firstName, lastName); } }