Lambda運算式
-
λ希臘字母表中排序第十一位的字母,英語名稱為Lambda
-
避免匿名內部類定義過多
-
其實質屬于函式式編程的概念
(params) -> expression[運算式]
(params) -> statement[陳述句]
? (params) -> {statements}
-
a -> System.out.println(“i like lambda——>”+a);
new Thread(()->System.out.println("多執行緒學習")).start(); -
為什么要使用lambda運算式
- 避免匿名內部類定義過多
- 可以讓你的代碼看起來很簡潔
- 去掉了一堆沒有意義的代碼,只留下核心的邏輯,
-
也許你會說,我看了Lambda運算式,不但不覺得簡潔,反而覺得更亂,看不懂了,那是因為我們還沒有習慣,用的多了,看習慣了,就好了,
-
理解Functional Interface(函式式介面) 是學習Java8 lambda運算式的關鍵所在,
-
函式式介面的定義:
-
任何借口,如果只包含唯一一個抽象方法,那么它就是一個函式式介面,
public interface Runnable{ public abstract void run(); } -
對于函式式介面,我們可以通過lambda運算式來創建該介面的物件,
-
-
實體:
public class TextLambda { // 3.靜態內部類 static class lamtext1 implements lam{ @Override public void lamtext1() { System.out.println("lamdba----------2"); } } public static void main(String[] args) { // 普通呼叫 lamtext l = new lamtext(); l.lamtext1(); // 呼叫靜態內部類 lamtext1 l2 = new lamtext1(); l2.lamtext1(); // 4.區域內部類 class lamtext2 implements lam{ @Override public void lamtext1() { System.out.println("lamdba----------3"); } } lamtext2 l1 =new lamtext2(); l1.lamtext1(); // 5.匿名內部類,沒有類名,必須借助介面或父類 lam ll =new lam() { @Override public void lamtext1() { System.out.println("lamdba----------4"); } }; ll.lamtext1(); // lambda運算式簡化 ll = ()->{ System.out.println("lamdba----------5"); }; ll.lamtext1(); } } // 1.定義一個函式式介面 interface lam{ void lamtext1(); } // 2.實作類 class lamtext implements lam{ @Override public void lamtext1() { System.out.println("lamdba----------1"); } } -
實體2:
public class TextLambda_yc { static class text1 implements lam1{ @Override public void textlam(int a, String b) { System.out.println(b+":"+a); } } public static void main(String[] args) { lam1 l = new text(); l.textlam(1,"靜態內部類"); class text2 implements lam1{ @Override public void textlam(int a, String b) { System.out.println(b+":"+a); } } l = new text2(); l.textlam(2,"區域內部類"); l = new lam1() { @Override public void textlam(int a, String b) { System.out.println(b+":"+a); } }; l.textlam(3,"匿名內部類"); l=(a,b)->{ System.out.println(b+":"+a); }; l.textlam(4,"lambda運算式"); } } interface lam1{ void textlam(int a,String b); } class text implements lam1{ @Override public void textlam(int a, String b) { System.out.println(b+":"+a); } } /* * 總結: * lambda運算式只能有一行代碼的情況下才能簡化成為一行,如果有多行,那么就用代碼塊包裹 * 前提是介面為函式式介面 * 多個引數也可以去掉引數型別,要去掉都去掉,必須加括號 * */
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/273224.html
標籤:java
上一篇:JAVA基礎 2021學習理解
