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


Learn Java in-depth with real-world projects through our Java certification course. Enroll and become a certified expert to boost your career.

单参数的 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+ 阅读量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告