Java 中的 lambda 表示式可以有多少個引數?


lambda 表示式簡單易懂,包含三個部分:**引數**(方法引數)、**箭頭運算子**(->)和**表示式**(方法體)。lambda 表示式可以分為三種類型:**無引數 lambda 表示式**、**單引數 lambda 表示式**和**多引數 lambda 表示式**。

無引數的 Lambda 表示式

如果需要建立無引數的 lambda 表示式,則以空括號開頭。

語法

() -> {
   //Body of no parameter lambda
}

示例(無引數 Lambda)

import java.util.function.*;
import java.util.Random;

public class LambdaExpression1 {
   public static void main(String args[]) {
      NumberUtil num = new NumberUtil();
      int randVal = num.getRandomValue(
               () -> {     // no parameter lambda
                   Random random = new Random();
                   return random.nextInt(500);
               });
      System.out.println("The value returned from Lambda is: "+ randVal);
   }
   private static class NumberUtil {
      public int getRandomValue(Supplier<Integer> supplier) {
         return supplier.get();
      }
   }
}

輸出

The value returned from Lambda is: 144


單引數的 Lambda 表示式

如果需要建立帶單個引數的 lambda 表示式,則以包含單個引數的括號開頭。

(p1) -> {
   //Body of single parameter lambda
}

示例(單引數 Lambda)

import java.util.function.*;

public class LambdaExpression2 {
   public static void main(String args[]) {
      Validator validator = new Validator();
      String city = "Hyderabad";
      boolean isValid = validator.isDataValid(city,
                    (String info) -> {           // single parameter lambda
                       String regx = "^[a-zA-Z0-9]*$";
                       return info.matches(regx);
                    });
      System.out.println(" The value returned from lambda is: "+ isValid);
   }
   private static class Validator {
      public boolean isDataValid(String data, Predicate<String> predicate) {
         return predicate.test(data);
      }
   }
}

輸出

The value returned from lambda is: true


多引數的 Lambda 表示式

如果需要建立帶多個引數的 lambda 表示式,則以包含多個引數的括號開頭。

(p1,p2) -> {
   //Body of multiple parameter lambda
}

示例(多引數 Lambda)

import java.util.function.*;

public class LambdaExpression3 {
   public static void main(String args[]) {
      Message m = new Message();
      m.printStringInteger("Java", 75,
                    (String str, Integer number) -> {     // multiple parameters lambda
                       System.out.println("The values are: "+ str + " "+ number);
                    });
      }
   private static class Message {
      public void printStringInteger(String str, Integer number, BiConsumer<String, Integer> biConsumber) {
         biConsumber.accept(str, number);
      }
   }
}

輸出

The values are: Java 75

更新於: 2020-07-10

4K+ 閱讀量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.