介绍
Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。
Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
使用 Lambda 表达式可以使代码变的更加简洁紧凑。
语法
Lambda表达式组成三要素:括号,箭头,代码块
- (): 里面没有内容,可以看成是方法形式参数为空
- ->:用箭头指向后面要做的事情
- {}: 包含一段代码,我们称之为代码块,可以看成是方法体中的内容
限制
有一个接口
接口中有且仅有一个抽象方法
案例
案例1
接口
/** * @author : Jay * @description : * @date : 2019-10-28 15:18 **/ public interface LambdaTest { /** * 执行函数 * @param method 函数名 */ void execute(String method); }
调用方
/** * @author : Jay * @description : 使用lambda的基本方式,以及几种简便写法 * @date : 2019-10-28 15:18 **/ public class LambdaTestImpl { public static void main(String[] args) { // 常规写法 execute((String method) -> { System.out.println("执行" + method + "成功!"); }); // 参数的类型可以省略 execute((method) -> { System.out.println("执行" + method + "成功!"); }); // 单个参数可以省略括号 execute(method -> { System.out.println("执行" + method + "成功!"); }); // //代码块中单个语句可以省略大括号 execute(method -> System.out.println("执行" + method + "成功!") ); } private static void execute(LambdaTest lambdaTest) { lambdaTest.execute("日志处理程序"); } }
结果
案例2
接口
/** * @author : Jay * @description : 计算 * @date : 2019-10-28 15:23 **/ public interface Calculation { /** * 计算平均数 * @param number1 * @param number2 * @param number3 * @return 平均数 */ int average(int number1, int number2, int number3); }
调用
/** * @author : Jay * @description : 调用时,不定义参数,只定义方法体的实现。 * @date : 2019-10-28 15:23 **/ public class CalculationImpl { public static void main(String[] args) { average((int number1, int number2, int number3) -> { return (number1 + number2 + number3) / 3; }); } private static void average (Calculation calculation) { int average = calculation.average(2, 3, 5); System.out.println("平均数为:" + average); } }
结果
关注公众号:熊猫Jay字节之旅,了解更多 AI 技巧 ~