JDK1 8新特性 Lambda表示式

2021-08-27 11:43:50 字數 2440 閱讀 5633

lambda表示式

函式式程式設計思想:

物件導向: 必須通過物件的形式來做事情.

函式式思想: 強調做什麼( 注重結果 ) , 而不是怎麼做.

lambda的格式:

●一些引數 ( ) 介面中的抽象方法的引數,有就寫上,沒有空著

●乙個箭頭 - > 傳遞:把引數傳遞給{}中的方法體

●一段** 重寫介面中的抽象方法的方法體

標準格式:

(引數型別 引數名稱) ‐>

lambda表示式的省略格式:

lambda表示式的省略格式:

a.( ):( )中的引數,資料型別是可以省略的 (int a,int b)–>(a,b)

b.( ):( )中如果只有乙個引數,那麼型別和()都可以省略 (int a)–>a

注意:如果沒有引數()不能省略

c.: ()中方法體,如果只有一行**那麼 return ;都可以省略

注意:必須3個一起省略

**如下:

// 匿名內部類的寫法.

new thread(new runnable() ).start();

// lambda表示式的寫法

new thread( () -> system.out.println("多執行緒任務執行!") ).start();

lambda的前提條件:

使用lambda必須具有介面,且要求介面中有且僅有乙個抽象方法。(函式式介面)

必須具有上下文推導。

也就是方法的引數或區域性變數型別必須為lambda對應的介面型別

函式式介面:有且僅有乙個抽象方法的介面.

使用: 函式介面必須作為方法的引數使用

@functionalinte***ce:    // 用來檢測乙個介面是否為函式式介面

public

inte***ce myfunctionalinte***ce

常用的函式式介面:

1.supplier: 生產資料

抽象方法: t get(): 獲取乙個泛型引數指定型別的資料.

// 建立乙個方法 , supplier介面作為方法引數型別 ,

public

static integer getmax(suppliers)

public

static

void

main(string args) );

system.out.println(name);

}

2.consumer: 消費資料

抽象方法: void accept(t t): 消費乙個指定泛型的資料.

預設方法: andthen(): 連線兩個介面

public

static

void

main(string args) ,"老王");

}// 定義乙個方法 , 函式介面consumer 作為引數 .

public

static

void

printstring(consumercon , string s)

/*3.function介面:用於進行資料型別轉換

抽象方法:

*/public

class demo01_function );

}// 建立乙個方法 , function函式介面作為引數 .

public

static

void

recever(string s , functionfun)

}

4.predicate介面:對某種型別的資料進行判斷.

抽象方法: test(t t) 判斷.

預設方法: and == &&

or == ||

negate == !

public

class demo01predicate );

}// 定義乙個方法 , predicate介面作為引數

public

static

void

checkstring(string s , predicatep)

}

jdk1 8新特性 Lambda表示式

要了解lambda表示式,我們先來說說函式式介面 函式式介面 介面中只有乙個抽象方法 有預設方法和靜態方法不影響 lambda表示式就是為了解決函式式介面而誕生的,可以先看乙個例子來了解 現在我們要實現下面介面的drive功能,我們能怎麼做呢?inte ce drive 1.通過一般類實現介面來重寫...

JDK1 8的新特性

jdk1.8之前的介面不可以有方法體,但從jdk1.8開始,介面中的方法可以帶有方法體為什麼要新增這個特性?介面就是為了定義乙個標準,這個標準要求所有的實現類實現這些抽象方法。但存在某些方法,所有的實現類 都是一樣的,索性就把這些 挪到介面中。使用的方法?通過default來修飾這個方法public...

JDK1 8新特性簡介

可以用static default來定義介面方法 用default來定義普通方法,這樣子類就不用強制覆寫這個方法了。用static來定義靜態方法 專給lanmda使用的介面加上annotation functionalinte ce 其中只能有乙個方法 使用 引數 程式執行語句 引數 簡單返回 引數...