Lambda表達式
lambda是將一個函數做爲一個參數進行傳遞。java
語法
(parameters) -> expression
express
(parameters) ->{ statements; }
app
前面是參數,後面是方法的執行體,只有一行代碼能夠省略花括號,只有一個參數也能夠省略參數的括號。函數
使用範圍spa
只有一個抽象方法的接口中的方法均可以使用lambda表達式進行編寫code
java8提供的接口對象
java8內置提供了4個用於lambda的接口接口
-
predicate接口get
-
斷言接口,接受一個參數返回一個boolean類型的值,用於判斷的時候使用,好比compareio
-
boolean test(T t);
-
-
consumer接口
-
消費者接口,接受一個參數不返回值,對參數進行處理,打印之類的操做
-
void accept(T t);
-
-
function<T,R>接口
-
方法處理接口,接受一個任意類型的參數,返回自定義類型的參數
-
R apply(T t);
-
-
supplier接口
-
生產者接口,不接受參數,返回任意類型的值
-
T get();
-
方法引用
-
構造方法的引用:
HashMap::new
==()->new String()
-
特定對象的方法引用
x::toString
==()->x.toString()
-
public void example() { String x = "hello"; function(x::toString); }
-
-
任意對象的實例方法引用
String::toString
==(s) -> s.toString()
-
靜態方法引用
String::valueOf
==`(s) -> String.valueOf(s)