最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java Lambda表達式入門示例

 更新時間:2019年09月30日 08:39:32   作者:cakincqm  
這篇文章主要介紹了Java Lambda表達式,結合簡單實例形式分析了Lambda表達式功能、原理、用法及相關操作注意事項,需要的朋友可以參考下

本文實例講述了Java Lambda表達式。分享給大家供大家參考,具體如下:

一 點睛

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

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("直升機飛行平穩(wěn)");
   });
   // Lambda表達式的代碼塊只有一條語句,省略花括號
   // 代碼塊中只有一條語句,即使該表達式需要返回值,也可以省略return關鍵字。
   lq.test((a , b)->a + b);
  }
}

2 運行

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

更多java相關內容感興趣的讀者可查看本站專題:《Java面向對象程序設計入門與進階教程》、《Java數據結構與算法教程》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設計有所幫助。

相關文章

  • Spring?IOC容器啟動示例分析

    Spring?IOC容器啟動示例分析

    這篇文章主要給大家介紹了Spring?IOC基于注解啟動的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2023-02-02
  • 實踐講解SpringBoot自定義初始化Bean+HashMap優(yōu)化策略模式

    實踐講解SpringBoot自定義初始化Bean+HashMap優(yōu)化策略模式

    本篇講解了SpringBoot自定義初始化Bean+HashMap優(yōu)化策略模式,通過實踐的方式更通俗易懂,對此不了解的同學跟著小編往下看吧
    2021-09-09
  • Java中ShardingSphere 數據分片的實現

    Java中ShardingSphere 數據分片的實現

    其實很多人對分庫分表多少都有點恐懼,我們今天用ShardingSphere 給大家演示數據分片,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 淺談JDK14性能管理工具之jmap和jhat

    淺談JDK14性能管理工具之jmap和jhat

    我們在寫代碼的過程中,經常會遇到內存泄露的問題,比如某個集合中的對象沒有被回收,或者內存出現不明原因的增長。這些都是需要我們來定位的問題,我們可以使用jmap和jhat來對java程序中的內存對象進行分析。
    2021-06-06
  • SpringBoot自動裝配原理小結

    SpringBoot自動裝配原理小結

    Spring Boot主要作用就是簡化Spring應用的開發(fā),開發(fā)者只需要通過少量代碼就可以創(chuàng)建一個Spring應用,而達到這一目的最核心的思想就是約定優(yōu)于配置。
    2021-05-05
  • Spring 實現給Bean屬性注入null值

    Spring 實現給Bean屬性注入null值

    這篇文章主要介紹了Spring 實現給Bean屬性注入null值的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • mybatis自動生成@Table、@Column、@Id注解的方法

    mybatis自動生成@Table、@Column、@Id注解的方法

    這篇文章主要介紹了mybatis自動生成@Table、@Column、@Id注解的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • 解決@JsonInclude(JsonInclude.Include.NON_NULL)不起作用問題

    解決@JsonInclude(JsonInclude.Include.NON_NULL)不起作用問題

    這篇文章主要介紹了解決@JsonInclude(JsonInclude.Include.NON_NULL)不起作用問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 詳解java 客戶端鏈接不上redis解決方案

    詳解java 客戶端鏈接不上redis解決方案

    這篇文章主要介紹了詳解java 客戶端鏈接不上redis解決方案,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-01-01
  • 基于java涉及父子類的異常詳解

    基于java涉及父子類的異常詳解

    下面小編就為大家?guī)硪黄趈ava涉及父子類的異常詳解。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09

最新評論

吕梁市| 新田县| 开鲁县| 方城县| 靖远县| 霍山县| 仁寿县| 务川| 邳州市| 平邑县| 大英县| 清涧县| 土默特右旗| 瑞安市| 阿拉善左旗| 怀柔区| 海南省| 吉林省| 西盟| 英吉沙县| 肥西县| 含山县| 牟定县| 资中县| 襄城县| 霍邱县| 察雅县| 顺昌县| 新密市| 建阳市| 集贤县| 沙河市| 武功县| 麻城市| 铜鼓县| 浑源县| 淮南市| 天祝| 博白县| 渭源县| 东阿县|