- Java程序員面試筆試寶典(第2版)
- 何昊等編著
- 387字
- 2022-06-17 16:00:42
1.5 Lambda表達式
Lambda表達式是一個匿名函數(指的是沒有函數名的函數),它基于數學中的λ演算得名,直接對應于其中的Lambda抽象。Lambda表達式可以表示閉包(注意和數學傳統意義上的不同)。
Lambda表達式允許把函數作為一個方法的參數。Lambda表達式的基本語法如下所示:

或

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

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

在Java8以前,Java語言通過匿名函數的方法來代替Lambda表達式。
對于列表的排序,如果列表里面存放的是自定義的類,那么通常需要指定自定義的排序方法,傳統的寫法如下所示:

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

或

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

推薦閱讀