java中Lamda表達式講解
Lamda表達式
- 1、λ 希臘字母表中排序第十一位的字母,英語名稱為 Lamda
- 2、避免匿名內部類定義過多
- 3、可以讓你的代碼看起來很簡潔
- 4、去掉瞭一堆沒有意義的代碼,留下核心的邏輯
- 5、其實質屬於函數式編程的概念
(params)-> expression[表達式]
(params) -> statement[語句]
(params) -> {statements}
a -> System.out.println("i like lamda-->"+a)
new Thread (()->System.out.println(“多線程學習。。。。”)
).start();
怎麼理解
- 1、理解Functional interface(函數式接口)是學習java8 lamda表達式的關鍵所在。
- 2、函數式接口的定義:
任何接口,如果隻包含唯一一個抽象方法,那麼它就是一個函數式接口。
public interface Runnable{ public abstract void run(); }
對於函數式接口,我們可以通過lamda表達式來創建該接口的對象
代碼推導λ表達式
package com.haiyang.lamda; public class TestLamda01 { //3、靜態內部類,同樣實現ILike接口 static class Like2 implements ILike{ @Override public void lamda() { System.out.println("i like lamda2"); } } public static void main(String[] args) { ILike like = new Like(); like.lamda(); like = new Like2(); like.lamda(); //4、局部內部類 class Like3 implements ILike{ @Override public void lamda() { System.out.println("i like lamda3"); } } like = new Like3(); like.lamda(); //5、匿名內部類,沒有類的名稱。必須借助接口或者父類 like = new ILike() { @Override public void lamda() { System.out.println("i like lamda4"); } }; like.lamda(); //6、lamda表達式 like = ()->{ System.out.println("i like lamda5"); }; like.lamda(); } } //1、定義一個隻有一個抽象方法的接口 interface ILike{ abstract void lamda(); } //2、實現類 class Like implements ILike{ @Override public void lamda() { System.out.println("i like lamda1"); } }
輸出:
帶一個參數的Lamda簡化
package com.haiyang.lamda; public class TestLamda02 { public static void main(String[] args) { ILive live = null; //Lamda簡化 live = (int a)->{ System.out.println("I live you"+a); }; live.live(1); //Lamda簡化參數類型 live = (a)->{ System.out.println("I live you"+a); }; live.live(2); //Lamda簡化括號 live = a->{ System.out.println("I live you"+a); }; live.live(3); //Lamda簡化花括號(隻有一條語句時) live = a->System.out.println("I live you"+a); live.live(4); } } interface ILive{ abstract void live(int a); }
輸出:
帶多個參數的Lamda簡化
package com.haiyang.lamda; public class TestLamda02 { public static void main(String[] args) { ILive live = null; //Lamda簡化 live = (int a,int b)->{ System.out.println("I live you"+a+b); }; live.live(1,1); //Lamda簡化參數類型(要去掉就要都去掉) live = (a,b)->{ System.out.println("I live you"+a+b); }; live.live(2,2); //Lamda簡化花括號(隻有一個語句時) live = (a,b)->System.out.println("I live you"+a+b); live.live(3,3); } } interface ILive{ abstract void live(int a,int b); }
輸出:
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。