Java8—Lambda
2021/11/6 14:09:48
本文主要是介绍Java8—Lambda,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、 Why Lambda
原因:
为了让代码更简洁,更优雅,优化程序。
Lambda表达式可以看做函数式编程的子集。
之前看过一位博主的写的一句便于理解的一种说法:
Lambda表达式,其实是一段可传递的代码。
它的本质是以类的身份,干方法的活。
博主:bravo1988
可以在知乎搜到他。
精辟!!!
二、Lambda的一些特性
例子:
接口:
public interface MyRunnable { void run(); }
实现类1
public class ByTrain implements MyRunnable { @Override public void run() { System.out.println("去12306买了一张票"); System.out.println("坐火车..."); } }
实现类2
public class ByAir implements MyRunnable {
@Override
public void run() {
System.out.println("在某App上订了飞机票");
System.out.println("坐飞机...");
}
}
调用类
public class MyThread { // 成员变量 private MyRunnable target; public MyThread() {} // 构造方法,接收外部传递的出行策略 public MyThread(MyRunnable target) { this.target = target; } // MyThread自己的run(),现在基本不用了 public void run() { System.out.println("去12306买了一张票"); System.out.println("坐火车..."); } // 如果外部传递了出行策略,就会调用该策略里的run() public void start() { if (target != null) { target.run(); } else { this.run(); } } }
匿名内部类启动类(Java8之前能做到的最好的优化)
public class Demo { public static void main(String[] args) { new MyThread(new MyRunnable() { @Override public void run() { System.out.println("不用买票"); System.out.println("骑电瓶车..."); } }).start(); } }
这时候是通过对象的方式传递
Java8使用Lambda改善
public class Demo { public static void main(String[] args) { new MyThread(() -> { System.out.println("不用买票"); System.out.println("骑电瓶车..."); }).start(); } }
我们会发现new MyThread()这个构造方法原本需要传递一个MyRunnable接口的子类对象(匿名类对象),但我们扔一个Lambda表达式进去,它也接受了,这说明Lambda表达式在身份上与匿名类对象等价。
并且我们会发现传进去的lambda表达式中最后干活的是那个sout语句,而sout语句是在方法中(方法是对代码块的封装),所以说Lambda表达式在作用上与方法等价。
总结自:
知乎博主:bravo1988
的博客
这篇关于Java8—Lambda的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-30java最新版本是什么,有什么特性?-icode9专业技术文章分享
- 2024-11-30[开源]27.8K star!这款 Postman 替代工具太火了!
- 2024-11-30Gzip 压缩入门教程:轻松掌握文件压缩技巧
- 2024-11-29开源工具的魅力:让文档管理更“聪明”
- 2024-11-29Release-it开发入门教程
- 2024-11-29Rollup 插件入门教程:轻松掌握模块打包
- 2024-11-29从零到一,产品经理如何玩转项目管理和团队协作
- 2024-11-29如何通过精益生产管理工具帮助项目团队实现精准进度控制?
- 2024-11-29低代码应用开发课程:新手入门与基础教程
- 2024-11-29入门指南:全栈低代码开发课程