三十 Lambda表示式 方法引用

2021-10-01 22:37:04 字數 3779 閱讀 4773

實現方式二

實現方式三

**演示

//方式一的執行緒類

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表示式被構造器替代的時候,它的形式引數全部傳遞給構造器作為引數

Lambda表示式之方法引用

方法引用可以被看做僅僅呼叫特定方法的lambda的一種快捷寫法。它的基本思想是,如果乙個lambda代表的只是 直接呼叫這個方法 那最好還是用名稱來呼叫它,而不是去描述如何呼叫它。事實上,方法引用就是讓你根據已有的方法實現來建立lambda表示式。但是,顯式地指明方法的名稱,你的 可讀性會更好。方法...

java方法引用替代lambda表示式

方法引用 當lambda表示式中僅僅呼叫乙個已經存在的方法時,我們就可以使用方法引用代替lambda表示式。這樣 可以讓程式進一步簡潔。方法引用分為以下四種 1 引用靜態方法 2 通過物件 引用 引用例項方法 3 通過型別引用例項方法 4 引用構造器 public class methodrefer...

Java之Lambda表示式 方法引用

本片部落格主要介紹介紹jdk1.8推出的新特性 jdk1.8之後介面出現以下兩類方法 a.在介面中使用default定義的普通方法,需要通過介面物件來呼叫 b.在介面中使用static定義的靜態方法,直接使用介面呼叫。範例 inte ce iinte ce 使用static定義的靜態方法 lambd...