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

java 8object oriented programmingprogramming

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("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) -> {
   //单个参数 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) -> {
   //多参数 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

相关文章