Lamda 表达式
1 什么是Lambda
Lambda 表达式是一种匿名函数,简单地说,它是没有声明的方法,也即没有访问修饰符、返回值声明和名字。它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使 Java 语言的表达能力得到了提升。
2 Lambda 语法
(params) -> expression (params) -> statement (params) -> { statements }
3 函数式接口
Lambda是建立在函数式接口的基础上的,先了解什么是函数式接口。
(1) 只包含一个抽象方法的接口,称为函数式接口;
(3) 可以通过 Lambda 表达式来创建该接口的对象;
(3) 我们可以在任意函数式接口上使用 @FunctionalInterface 注解,这样做可以检测它是否是一个函数式接口,同时 javadoc 也会包含一条声明,说明这个接口是一个函数式接口。
在实际开发者有两个比较常见的函数式接口:Runnable接口,Comparator接口。
4 普通外部类向Lambda表达式演进过程
实例1

/** * @author Latiny * @version 1.0 * @description: Lambda表达式的演进 * @date 2019/8/21 15:18 */ public class LambdaDemo { public static void main(String[] args) { // 1 外部接口实现类 Animal human = new Human(); human.move(); // 2 内部静态类 Animal snake = new Snake(); snake.move(); // 3 内部匿名类 Animal bird = new Animal(){ @Override public void move() { System.out.println("Flying"); } }; bird.move(); // 4 Lambda 表达式 Animal fish = () -> { System.out.println("Swimming"); }; fish.move(); } /** * 2 内部静态实现类 */ static class Snake implements Animal { @Override public void move() { System.out.println("Crawling"); } } } /** * 接口 */ interface Animal { void move(); } /** * 1 外部接口实现类 */ class Human implements Animal { @Override public void move() { System.out.println("Walking"); } }
实例2

public class LambdaTest { public static void main(String[] args) { // 1 内部匿名类 Calculate calculate = new Calculate(){ @Override public int add(int a, int b) { return a + b; } }; calculate.add(10, 20); // 2 Lambda 表达式 calculate = (a, b) -> { return a + b; }; calculate.add(3, 7); } } /** * 接口 */ interface Calculate { int add(int a, int b); }
5 Lambda表达式在Thread中的应用
public static void main(String[] args) { new Thread(() -> { int i = 1; while (i <= 100) { System.out.println(Thread.currentThread().getName() + "--->" + i); i++; } }, "Human").start(); Runnable runnable = () -> { int i = 1; while (i <= 100) { System.out.println(Thread.currentThread().getName() + "--->" + i); i++; } }; new Thread(runnable, "Tortoise").start(); new Thread(runnable, "Rabbit").start(); }
参考:https://www.cnblogs.com/qdhxhz/p/9393724.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?