Java中的lambda表达式可以有多少个参数?

lambda表达式很简单,包含三个部分,例如参数 (方法参数),箭头运算符 (->)和表达式 (方法主体)。lambda表达式可分为三种类型: 无参数lambda表达式单参数lambda表达式多参数lambda表达式

没有参数的Lambda表达式

我们无需创建任何参数lambda表达式,然后以空括号开始表达式。

语法

() -> {
   //无参数的主体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(               
                       () -> {     // 无参数lambda
                   Random random = new Random();
                   return random.nextInt(500);
               });
      System.out.println("Lambda返回的值是: "+ randVal);
   }
   private static class NumberUtil {
      public int getRandomValue(Supplier<Integer> supplier) {
         return supplier.get();
      }
   }
}

输出结果

Lambda返回的值是: 144

单参数Lambda表达式

我们需要使用单个参数创建lambda表达式,然后使用单个参数的括号开始表达式。

(p1) -> {
   //单参数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) -> {           // 单参数lambda                       
                          String regx = "^[a-zA-Z0-9]*$";
                       return info.matches(regx);
                    });
      System.out.println("lambda返回的值是: "+ isValid);
   }
   private static class Validator {
      public boolean isDataValid(String data, Predicate<String> predicate) {
         return predicate.test(data);
      }
   }
}

输出结果

lambda返回的值是: true

具有多个参数的Lambda表达式

我们需要创建具有多个参数的lambda表达式,然后以多个参数的括号开始该表达式。

(p1,p2) -> {
   //多参数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) -> {     // 多参数lambda
                       System.out.println("值为: "+ str + " "+ number);
                    });
      }
   private static class Message {
      public void printStringInteger(String str, Integer number, BiConsumer<String, Integer> biConsumber) {
         biConsumber.accept(str, number);
      }
   }
}

输出结果

值为: Java 75