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