官术网_书友最值得收藏!

1.5 Lambda表達式

Lambda表達式是一個匿名函數(指的是沒有函數名的函數),它基于數學中的λ演算得名,直接對應于其中的Lambda抽象。Lambda表達式可以表示閉包(注意和數學傳統意義上的不同)。

Lambda表達式允許把函數作為一個方法的參數。Lambda表達式的基本語法如下所示:

Lambda的使用方法如下例所示:

以上這種寫法中,i的類型由編譯器推測出來的,當然,也可以顯式地指定類型,如下例所示:

在Java8以前,Java語言通過匿名函數的方法來代替Lambda表達式。

對于列表的排序,如果列表里面存放的是自定義的類,那么通常需要指定自定義的排序方法,傳統的寫法如下所示:

采用Lambda表達式后,寫法如下所示:

顯然,采用Lambda表達式后,代碼會變得更加簡潔。

Lambda表達式是通過函數式接口(只有一個方法的普通接口)來實現的。函數式接口可以被隱式地轉換為Lambda表達式。為了與普通的接口區分開(普通接口中可能會有多個方法),Java8新增加了一種特殊的注解@FunctionalInterface。下面給出一個函數式接口的定義:

主站蜘蛛池模板: 浦东新区| 西畴县| 全椒县| 塔城市| 改则县| 芜湖县| 文成县| 宁蒗| 日土县| 兴业县| 宁波市| 开原市| 德昌县| 改则县| 福州市| 商都县| 邵东县| 江西省| 宁武县| 尚义县| 龙里县| 莱芜市| 腾冲县| 资阳市| 谢通门县| 乐昌市| 西吉县| 威远县| 德令哈市| 乐都县| 石楼县| 巨鹿县| 双桥区| 芜湖县| 苍南县| 清流县| 隆回县| 边坝县| 丁青县| 司法| 扎鲁特旗|