JavaLambda表达式
2021/9/25 1:10:53
本文主要是介绍JavaLambda表达式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Java Lambda 表达式
使用λ表达式的作用:避免匿名内部类定义过多。
lambda表达式是属于函数式编程。
函数式接口:
定义:任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。
对于这种函数式接口,就可以通过lambda表达式来创建该接口的对象。
多线程语句
package com.sdut.lambdatrst; public class LambdaTest01 extends Thread{ public static void main(String[] args) { new Thread( ()-> System.out.println("多线程语句") ).start(); System.out.println("主线程语句"); } }
为什么使用lambda表达式
- 避免内部类定义过多
- 代码整洁
- 去掉没有意义的代码,只留下核心逻辑
老式实现接口方法
package com.sdut.lambdatrst; public interface LambdaTest02 { void test(); }
package com.sdut.lambdatrst; public class LambdaTest03 implements LambdaTest02{ @Override public void test() { System.out.println("Lambda"); } public static void main(String[] args) { LambdaTest03 lambdaTest03 = new LambdaTest03(); lambdaTest03.test(); } }
使用lambda表达式
演化过程
package com.sdut.lambdatrst; public class LambdaTest04 { //2.内部类(静态内部类) static class Test02 implements LambdaTest02 { @Override public void test() { System.out.println("静态内部类"); } } public static void main(String[] args) { //3.局部内部类 class Test03 implements LambdaTest02 { @Override public void test() { System.out.println("局部内部类"); } } //4.匿名内部类 new LambdaTest02() { @Override public void test() { System.out.println("匿名内部类"); } }; //5.lambda表达式 LambdaTest02 lambdaTest02 = new Test01(); lambdaTest02 = () ->{ System.out.println("lambda表达式"); }; lambdaTest02.test(); } } //1.外部类 class Test01 implements LambdaTest02 { @Override public void test() { System.out.println("外部类"); } }
package com.sdut.lambdatrst; public class LambdaTest05 { public static void main(String[] args) { //标准写法 Interface01 interface01 = (int a) ->{ System.out.println("a :" + a); }; interface01.test(520); //简化变量 Interface01 interface02 = (a) ->{ System.out.println("a :" + a); }; interface02.test(521); //单是一个参数可以省略括号 Interface01 interface03 = a ->{ System.out.println("a :" + a); }; interface03.test(522); //单是一条语句可以省略代码块括号 Interface01 interface04 = a -> System.out.println("a :" + a);; interface04.test(523); } }
注意:
- 如果是多个变量,不可以省略括号,但是如果省略变量类型,那么必须都省略
- 如果是多条语句,必须加上代码块括号。
常见的函数式接口
- java.lang.Runnable
- java.util.Comparator
- java.awt.event.ActionListener
- java.util.function
- java.util.function.Predicate
函数式接口李允许定义java.lang.Object 里的 public 方法,这些方法对于函数式接口来说,即使是抽象方法的写法也不会被认为是抽象等待,因为任何函数式接口的实现,默认都继承了Object类,包含了来自java.lang.Object 里对这些抽象方法的实现。
函数式接口里面允许定义默认方法,因为默认方法不是抽象方法,其有一个默认实现,所以是符合函数式接口的定义。
这篇关于JavaLambda表达式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-28知识管理革命:文档软件的新玩法了解一下!
- 2024-11-28低代码应用课程:新手入门全攻略
- 2024-11-28哪些办公软件适合团队协作,且能够清晰记录每个阶段的工作进展?
- 2024-11-28全栈低代码开发课程:零基础入门到初级实战
- 2024-11-28拖动排序课程:轻松掌握课程拖动排序功能
- 2024-11-28如何高效管理数字化转型项目
- 2024-11-28SMART法则好用吗?有哪些项目管理工具辅助实现?
- 2024-11-28深度剖析:6 款办公软件如何构建设计团队项目可视化管理新生态?
- 2024-11-28HTTP缓存课程:新手入门指南
- 2024-11-28实战丨证券 HTAP 混合业务场景的难点问题应对