目錄
Lambda表達式是JDK8新增的一種語法格式
1.作用
2.用法規則:
3.方法引用
Lambda表達式是JDK8新增的一種語法格式
1.作用
簡化匿名內部類的代碼寫法
Lambad用法前提:只能簡化函數式接口(一般加有@Funcationallnterface)(有且僅有一個抽象方法@)的匿名內部類
匿名內部類:(本質是對象名的子類對象)? ? :?
? ? ? ? ? ? ? ? ? 對象名 a = new 對象名(){ ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?@Override ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?public void 方法名(){ ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 內容? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }; ? ? ? ? ?
2.用法規則:
Lambda表達式的省略寫法(進一步簡化Lambda表達式的寫法)
1.參數類型可以省略不寫
2.如果只有一個參數,參數類型可以省略,同時()也可以省略。
3.如果Lambda表達式中的方法體代碼只有一行代碼,可以省略大括號不寫,同時要省略分號!此時,如果這行代碼是return語句,也必須去掉return不寫
格式:(被重寫方法的形參列表)->{
? ? ? ? ? ? ?被重寫方法的方法體代碼
? ? ? ? ? ? }
最終簡化:?
對象名 a =() ->{
? ? return? 內容
});
最終簡化
一個參數下:(對象名,o1?->內容);
兩個參數下:(對象名,(o1,o2) ->內容);
3.方法引用
作用:進一步簡化Lambda表達式
標志性符號? ::
1.靜態方法(static修飾)的引用:只調用一個靜態方法,并且前后參數的形式一致
類名 :: 靜態方法
2.實例方法的引用:只調用一個實例方法,并且前后參數的形式一致
對象名 ::實例方法
3.特定類型方法的引用:只調用一個實例方法,并且前面參數列表中的第一個參數是作為方法的主調,后面的所有參數都是作為該實例方法的入參的
類型 ::方法
4.構造器引用:如果某個Lambda表達式里只是在創建對象,并且前后參數情況一致
類名 ::new