lambda表示式和匿名內部類的比較

2021-10-06 06:15:02 字數 1401 閱讀 8494

【lambda表示式與匿名內部類的 區別】

1.匿名內部類可以為任意介面建立例項——不管有多少個抽象方法,只要匿名內部類實現了所有方法即可。

但是lambda表示式只能為函式式介面內建立例項。

2.匿名內部類可以為抽象類甚至普通類創建立例項,

但lambda表示式只能為函式式介面建立例項。

3.匿名內部類實現的抽象方法體允許呼叫介面中的預設方法

lambda表示式的**塊不允許呼叫介面中的預設方法

【lambda表示式與匿名內部類的 相同點】

1.lambda表示式和匿名內部類一樣,都可以直接訪問"effectively final"的區域性變數,以及外部類的成員變數(包括例項變數和類變數)

2.lambda表示式建立的物件和匿名內部類建立的物件一樣,都可以直接呼叫從介面中繼承的預設方法。

普通兩個類:

public

class

timetest

}class

timerprinter

implements

actionlistener

}

lambda表示式

public

class

lambuda);

t.start()

; joptionpane.

showmessagedialog

(null

,"quit progrom?");

system.

exit(0

);}}

匿名內部類

public

class

innerclass};

timer t =

newtimer

(1000

,listener)

; t.

start()

; joptionpane.

showmessagedialog

(null

,"quit progrom?");

system.

exit(0

);}}

匿名內部類與Lambda表示式

1.特徵上 沒有名字 2.實現上 既可以擴充套件類,也可以實現介面,但是不能兩者兼備 3.限制上 如果實現介面,只能實現乙個介面 4.功能上 簡化 符合優先使用類而不是介面的設計思想 舉例 description service介面 inte ce service description servi...

Lambda表示式與匿名內部類

lambda的無參形式 public class test2 start lambda表示式建立執行緒 newthread system.out.println thread.currentthread getname start 上面分別通過匿名內部類和lambda表示式建立了兩個執行緒。lamb...

內部類,Lambda表示式

內部類定義格式 內部類的訪問特點 示例 內部類訪問特點 內部類可以直接訪問外部類的成員,包括私有 外部類要訪問內部類的成員,必須建立物件 public class outer public void method 外界建立成員內部類格式 私有成員內部類 靜態成員內部類 區域性內部類方式方式 示例 c...