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
广告