Lambda表示式和方法引用與構造器引用

2021-09-25 20:50:05 字數 2011 閱讀 2969

匿名類的一種簡寫方式,但是有條件

lambda表示式要用到->箭頭符號

以->箭頭符號 分為左右倆半

箭頭左邊是重寫介面中抽象方法的引數列表

箭頭右邊是對介面中抽象方法的重寫邏輯

使用lambda表示式的要求:要求介面中只能有乙個抽象方法或者介面是函式式介面

函式式介面:介面中只有乙個抽象方法

使用@functionalinte***ce註解可以檢測函式式介面

list list = arrays.

aslist(10

,20,1

);//匿名內部類的寫法

list.

sort

(new

comparator

()})

;//第一步 簡寫

list.

sort

((integer x,integer y)

->);

//第二步簡寫 形參的資料型別可以省略不寫

list.

sort

((x,y)

->);

//第三步簡寫:如果你對方法實現邏輯只有一行,可以省略{} 和 return

//但是如果,你對介面中的抽象方法的實現邏輯不是一行,就不能省略{}和return

list.

sort

((x,y)

->x-y)

;

引數型別t,無返回值,對型別為t的物件應用操作

包含方法:void accept(t t)

無引數,返回型別為t的物件

包含方法: t get();

確定型別為t的物件是否滿足某約束,並返回boolean 值。

包含方法boolean test(t t);

方法引用其實是lambda表示式的另一種寫法,

當要傳遞給lambda體的操作,已經有實現的方法了,可以使用方法引用.

你在重寫介面中的方法時,不經意間,呼叫了乙個方法,這個方法的形參和返回值,正好和這個抽象方法的返回值對應上,就可以使用該方法進行簡寫

注意:實現抽象方法的引數列表,必須與方法引用方法的引數列表保持一致!

方法引用:使用操作符 「 ::」 將方法名和物件或類的名字分隔開來。

如下三種主要使用情況:

物件::例項方法

類::靜態方法

類::例項方法

//內部類

function

function

=new

function

()};

function function2 =

(x)-

>integer.

parseint

(x);

//lambda表示式

function function3=integer:

:parseint;

//方法引用

格式:classname::new

與函式式介面相結合,自動與函式式介面中方法相容。可以把構造器引用賦值給定義的方法,與構造器引數列表要與介面中抽象方法的引數列表一致!

supplier  s =()

->

newmytest()

;supplier s1 =mytest:

:new

;

Java中Lambda表示式與方法引用和構造器引用

首先看 timer t new timer 1000,system.out println 表示式 system.out println 就是乙個方法引用,等價於lambda表示式 x system.out.println x 一 object instancemethod 二 class stat...

Lambda表示式之方法引用

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

三十 Lambda表示式 方法引用

實現方式二 實現方式三 演示 方式一的執行緒類 public class myrunnable implements runnable public class lambdademo start 方式三 newthread start 函式式程式設計思想概述 函式式思想則盡量忽略物件導向的複雜語法 ...