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表达式,然后使用单个参数的括号开始表达式。
(p1) -> { //单参数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表达式,然后以多个参数的括号开始该表达式。
(p1,p2) -> { //多参数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