JDK新特性(一)Lambda 方法引用

2021-10-19 07:41:37 字數 3825 閱讀 8417

2.介面組成更新

3.方法引用

實現方式二

實現方式三

**演示

//方式一的執行緒類

public

class

myrunnable

implements

runnable

}public

class

lambdademo

// }).start();

//方式三

newthread((

)->).

start()

;}}

函式式程式設計思想概述

函式式思想則盡量忽略物件導向的複雜語法:「強調做什麼,而不是以什麼形式去做」

而我們要學習的lambda表示式就是函式式思想的體現

組成lambda表示式的三要素:

練習描述

​ 無參無返回值抽象方法的練習

操作步驟

示例**

//介面

public

inte***ce

eatable

//實現類

public

class

eatableimpl

implements

eatable

}//測試類

public

class

eatabledemo})

;//lambda表示式

useeatable((

)->);

}private

static

void

useeatable

(eatable e)

}

示例**

public

inte***ce

flyable

public

class

flyabledemo})

; system.out.

println

("--------");

//lambda

useflyable

((string s)

->);

}private

static

void

useflyable

(flyable f)

}

示例**

public

inte***ce

addable

public

class

addabledemo);

}private

static

void

useaddable

(addable a)

}

**演示

public

inte***ce

addable

public

inte***ce

flyable

public

class

lambdademo

);//引數的型別可以省略

useaddable

((x, y)

->);

// useflyable((string s) -> );

//如果引數有且僅有乙個,那麼小括號可以省略

// useflyable(s -> );

//如果**塊的語句只有一條,可以省略大括號和分號

useflyable

(s -

> system.out.

println

(s))

;//如果**塊的語句只有一條,可以省略大括號和分號,如果有return,return也要省略掉

useaddable

((x, y)

-> x + y);}

private

static

void

useflyable

(flyable f)

private

static

void

useaddable

(addable a)

}

使用限制不同

實現原理不同

注意事項

​ 引用類方法,其實就是引用類的靜態方法

類名::靜態方法

**演示

public

inte***ce

converter

public

class

converterdemo

private

static

void

useconverter

(converter c)

}

使用說明

lambda表示式被類方法替代的時候,它的形式引數全部傳遞給靜態方法作為引數

​ 引用物件的例項方法,其實就引用類中的成員方法

**演示

public

class

printstring

}public

inte***ce

printer

public

class

printerdemo

private

static

void

useprinter

(printer p)

}

使用說明

lambda表示式被物件的例項方法替代的時候,它的形式引數全部傳遞給該方法作為引數

​ 引用類的例項方法,其實就是引用類中的成員方法

**演示

public

inte***ce

mystring

public

class

mystringdemo

private

static

void

usemystring

(mystring my)

}

使用說明

​ lambda表示式被類的例項方法替代的時候

​ 第乙個引數作為呼叫者

​ 後面的引數全部傳遞給該方法作為引數

​ 引用構造器,其實就是引用構造方法

**演示

public

class

student

public

student

(string name,

int age)

public string getname()

public

void

setname

(string name)

public

intgetage()

public

void

setage

(int age)

}public

inte***ce

studentbuilder

public

class

studentdemo

private

static

void

usestudentbuilder

(studentbuilder sb)

}

使用說明

lambda表示式被構造器替代的時候,它的形式引數全部傳遞給構造器作為引數

jdk8新特性 lambda表示式

1 什麼是lambda表示式?lambda表示式 也叫做閉包 是jdk8中的新語法,它允許我們將函式當成引數傳遞給某個方法或者將 本身作為資料進行處理。2 lambda表示式示例 2.1 用lambda表示式實現runnable 通過匿名內部類方法重寫runnable介面 new thread ne...

JDK1 8新特性 Lambda表示式

lambda表示式 函式式程式設計思想 物件導向 必須通過物件的形式來做事情.函式式思想 強調做什麼 注重結果 而不是怎麼做.lambda的格式 一些引數 介面中的抽象方法的引數,有就寫上,沒有空著 乙個箭頭 傳遞 把引數傳遞給 中的方法體 一段 重寫介面中的抽象方法的方法體 標準格式 引數型別 引...

jdk1 8新特性 Lambda表示式

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