欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java Lambda表達(dá)式入門(mén)示例

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

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

一 點(diǎn)睛

Lambda表達(dá)式支持將代碼塊作為方法參數(shù),Lambda表達(dá)式允許使用更簡(jiǎn)潔的代碼來(lái)創(chuàng)建只有一個(gè)抽象方法的接口(函數(shù)式接口)的實(shí)例。

Lambda表達(dá)式主要作用就是代替匿名內(nèi)部類(lèi)的繁瑣語(yǔ)法。

它由三部分組成:

  • 形參列表。形參列表允許省略形參類(lèi)型。如果形參列表中只有一個(gè)參數(shù),甚至連形參列表的圓括號(hào)也可以省略。
  • 箭頭(->),必須通過(guò)英文等號(hào)和大于符號(hào)組成。
  • 代碼塊。如果代碼塊只有包含一條語(yǔ)句,Lambda表達(dá)式允許省略代碼塊的花括號(hào),如果省略了代碼塊的花括號(hào),這條語(yǔ)句不要用花括號(hào)表示語(yǔ)句結(jié)束。Lambda代碼塊只有一條return語(yǔ)句,甚至可以省略return關(guān)鍵字。Lambda表達(dá)式需要返回值,而它的代碼塊中僅有一條省略了return的語(yǔ)句,Lambda表達(dá)式會(huì)自動(dòng)返回這條語(yǔ)句的值。

二 用匿名內(nèi)部類(lèi)實(shí)現(xiàn)命令模式

1 代碼

Command接口

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

ProcessArray類(lèi)

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

CommandTest類(lèi)

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("數(shù)組元素的總和是:" + sum);
      }
    });
  }
}

2 運(yùn)行

數(shù)組元素的總和是:9

三 用Lambda表達(dá)式實(shí)現(xiàn)命令模式

1 代碼

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

2 運(yùn)行

數(shù)組元素的總和是:9

四 比較

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

Lambda表達(dá)式的代碼塊會(huì)代替實(shí)現(xiàn)方法的方法體,Lambda表達(dá)式就相對(duì)于一個(gè)匿名方法。

五 Lambda表達(dá)式的簡(jiǎn)化寫(xiě)法

1 代碼

interface Eatable
{
  void taste();
}
interface Flyable
{
  void fly(String weather);
}
interface Addable
{
  int add(int a , int b);
}
public class LambdaQs
{
  // 調(diào)用該方法需要Eatable對(duì)象
  public void eat(Eatable e)
  {
   System.out.println(e);
   e.taste();
  }
  // 調(diào)用該方法需要Flyable對(duì)象
  public void drive(Flyable f)
  {
   System.out.println("我正在駕駛:" + f);
   f.fly("【碧空如洗的晴日】");
  }
  // 調(diào)用該方法需要Addable對(duì)象
  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表達(dá)式的代碼塊只有一條語(yǔ)句,可以省略花括號(hào)。
   lq.eat(()-> System.out.println("蘋(píng)果的味道不錯(cuò)!"));
   // Lambda表達(dá)式的形參列表只有一個(gè)形參,省略圓括號(hào)
   lq.drive(weather ->
   {
     System.out.println("今天天氣是:" + weather);
     System.out.println("直升機(jī)飛行平穩(wěn)");
   });
   // Lambda表達(dá)式的代碼塊只有一條語(yǔ)句,省略花括號(hào)
   // 代碼塊中只有一條語(yǔ)句,即使該表達(dá)式需要返回值,也可以省略return關(guān)鍵字。
   lq.test((a , b)->a + b);
  }
}

2 運(yùn)行

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

更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論