Lamda運算式
-
λ 希臘字母表中排序第十一位字母,英語名稱為Lambda
-
避免匿名內部類定義過多
-
其實質屬于函式式 編程的概念
-
(params)->expression[運算式]
-
(params)->statement[陳述句]
-
(params)->{statements}
-
(a-> System.out.print(“i like lambda–>”+a));
-
new Thread (()->System.out.println(“多執行緒學習,,,,”)).start();
-
為什么要使用lambda運算式
- 避免匿名內部類定義過多
- 可以讓你的代碼看起來很簡潔
- 去掉了一堆沒有意義的代碼,只留下核心的邏輯,
-
也許你會說,我看了Lambda運算式,不但不覺得簡潔,反而覺得更亂,看不懂了,那是因為我們還沒有習慣,用的多了,看習慣了就好了,
本章重點
- 理解Functionl Interface(函式式介面)是學習java8 lambda運算式的關鍵所在
- 函式介面的定義
- 任何介面,如果只包含唯一一個抽象方法,那么他就是一個函式式介面
- 對于函式式介面,我們可以通過lambda式來創建該介面的物件,
實體代碼
-
靜態內部類,區域內部類,匿名內部類與lambda運算式
-
public class TestLambda1 { //靜態內部類 static class like2 implements ilike{ @Override public void lambda() { System.out.println("i like lambda2"); } } public static void main(String[] args) { ilike i=new like(); i.lambda(); i=new like2(); i.lambda(); //區域內部類 class like3 implements ilike{ @Override public void lambda() { System.out.println("i like lambda3"); } } i=new like3(); i.lambda(); //匿名內部類,沒有類的名稱,必須借助介面或者夫類 i=new ilike() { @Override public void lambda() { System.out.println("i like lambda4"); } }; i.lambda(); //用lambda簡化 i =()-> { System.out.println("i like lambda5"); }; i.lambda(); } } //定義一個函式式介面 interface ilike{ void lambda(); } //實作介面 class like implements ilike{ @Override public void lambda() { System.out.println("i like lambda"); } } -
lambda運算式:
-
public class TestLambda2 { public static void main(String[] args) { Ilove love=null; //2.lamda表示簡化 // Ilove love=(int a)->{ // System.out.println("i love you-->"+a); // // }; // //簡化1.去掉引數型別 // love =(a)->{ // System.out.println("i love you-->"+a); // // }; //簡化2 簡化括號 love =a->{ System.out.println("i love you-->"+a); }; //簡化3 去掉花括號 love =a-> System.out.println("i love -->"+a); //總結 //lambda運算式只能有一行代碼的情況下才能簡化成為一行,如果又多行就攜程代碼塊 //前提是介面為函式式(介面中只有一個方法位函式方法) //多個引數也可以去掉引數型別,要去掉都去掉,必須加上括號 love.love(2); } } interface Ilove{ void love(int a); }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/273713.html
標籤:java
