中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中Lambda表達式如何使用

發布時間:2021-06-25 16:18:32 來源:億速云 閱讀:139 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關Java中Lambda表達式如何使用,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

一 點睛

Lambda表達式支持將代碼塊作為方法參數,Lambda表達式允許使用更簡潔的代碼來創建只有一個抽象方法的接口(函數式接口)的實例。

Lambda表達式主要作用就是代替匿名內部類的繁瑣語法。

它由三部分組成:

形參列表。形參列表允許省略形參類型。如果形參列表中只有一個參數,甚至連形參列表的圓括號也可以省略。  箭頭(->),必須通過英文等號和大于符號組成。  代碼塊。如果代碼塊只有包含一條語句,Lambda表達式允許省略代碼塊的花括號,如果省略了代碼塊的花括號,這條語句不要用花括號表示語句結束。Lambda代碼塊只有一條return語句,甚至可以省略return關鍵字。Lambda表達式需要返回值,而它的代碼塊中僅有一條省略了return的語句,Lambda表達式會自動返回這條語句的值。

二 用匿名內部類實現命令模式

1 代碼

Command接口

public interface Command{  // 接口里定義的process()方法用于封裝“處理行為”  void process(int[] target);}

ProcessArray類

public class ProcessArray {  public ProcessArray() {  }  public void process(int[] target, Command cmd) {    cmd.process(target);  }}

CommandTest類

public class CommandTest {  public CommandTest() {  }  public static void main(String[] args) {    ProcessArray pa = new ProcessArray();    int[] array = new int[]{3, -4, 6, 4};    pa.process(array, new Command() {      public void process(int[] target) {        int sum = 0;        int[] var3 = target;        int var4 = target.length;        for(int var5 = 0; var5 < var4; ++var5) {          int tmp = var3[var5];          sum += tmp;        }        System.out.println("數組元素的總和是:" + sum);      }    });  }}

2 運行

數組元素的總和是:9

三 用Lambda表達式實現命令模式

1 代碼

public class CommandTest2{  public static void main(String[] args)  {   ProcessArray pa = new ProcessArray();   int[] array = {3, -4, 6, 4};   // 處理數組,具體處理行為取決于匿名內部類   pa.process(array , (int[] target)->{      int sum = 0;      for (int tmp : target )      {        sum += tmp;      }      System.out.println("數組元素的總和是:" + sum);     });  }}

2 運行

數組元素的總和是:9

四 比較

Lambda表達式與匿名內部類比較,不需要new XXX(){}這種繁瑣的代碼,不需要指出重寫方法名字,不需要給出重寫方法的返回值類型,只要給出重寫的方法括號以及括號里的形參列表即可。

Lambda表達式的代碼塊會代替實現方法的方法體,Lambda表達式就相對于一個匿名方法。

五 Lambda表達式的簡化寫法

1 代碼

interface Eatable{  void taste();}interface Flyable{  void fly(String weather);}interface Addable{  int add(int a , int b);}public class LambdaQs{  // 調用該方法需要Eatable對象  public void eat(Eatable e)  {   System.out.println(e);   e.taste();  }  // 調用該方法需要Flyable對象  public void drive(Flyable f)  {   System.out.println("我正在駕駛:" + f);   f.fly("【碧空如洗的晴日】");  }  // 調用該方法需要Addable對象  public void test(Addable add)  {   System.out.println("5與3的和為:" + add.add(5, 3));  }  public static void main(String[] args)  {   LambdaQs lq = new LambdaQs();   // Lambda表達式的代碼塊只有一條語句,可以省略花括號。   lq.eat(()-> System.out.println("蘋果的味道不錯!"));   // Lambda表達式的形參列表只有一個形參,省略圓括號   lq.drive(weather ->   {     System.out.println("今天天氣是:" + weather);     System.out.println("直升機飛行平穩");   });   // Lambda表達式的代碼塊只有一條語句,省略花括號   // 代碼塊中只有一條語句,即使該表達式需要返回值,也可以省略return關鍵字。   lq.test((a , b)->a + b);  }}

2 運行

LambdaQs$$Lambda$1/1078694789@3d075dc0蘋果的味道不錯!我正在駕駛:LambdaQs$$Lambda$2/1149319664@7cca494b今天天氣是:【碧空如洗的晴日】直升機飛行平穩5與3的和為:8

關于Java中Lambda表達式如何使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

马山县| 灯塔市| 常熟市| 井陉县| 英德市| 祥云县| 视频| 龙井市| 定陶县| 营口市| 安康市| 醴陵市| 阿拉善盟| 扶风县| 高密市| 宣化县| 三台县| 娄烦县| 益阳市| 大厂| 肇源县| 贡觉县| 红桥区| 朝阳县| 孝昌县| 台山市| 松潘县| 湄潭县| 宝鸡市| 兴义市| 武功县| 华宁县| 邵阳市| 青田县| 昆山市| 南涧| 高陵县| 木里| 西林县| 商城县| 嫩江县|