Lambda表达式的基础用法
2022/2/11 6:13:52
本文主要是介绍Lambda表达式的基础用法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Lambda表达式的基础用法
- 需要一个接口
- 接口中有且只有一个抽象方法
- 必须有上下文环境(赋值或者是对应参数)
无参无返回值
接口:
public interface Person { void eat(); }
测试类:
public class LambdaDemo { public static void main(String[] args) { /* * 三种方式实现接口: * * 1.新建一个实现类实现接口 * 2.匿名内部类实现接口 * 3.lambda表达式 * */ // 2.匿名内部类实现 useEat(new Person() { @Override public void eat() { System.out.println("吃"); } }); // 3.lambda表达式 /* * 写法和js的ES6中的箭头函数类似 * 这次写的是无参方法 * */ useEat(() -> { System.out.println("吃"); }); } // 定义一个方法,参数为这个接口的多态对象 public static void useEat(Person person){ // 调用接口中的方法 person.eat(); } }
带参无返回值
接口:
public interface Person { void sing(String song); }
测试类:
public class Lambda { public static void main(String[] args) { // 匿名内部类 useSing(new Person() { @Override public void sing(String song) { System.out.println(song); } }); // lambda表达式 useSing((String s) -> { System.out.println(s); }); } // 定义一个方法 public static void useSing(Person person){ person.sing("天下"); } }
带参带返回值
接口:
public interface Math { int add(int x,int y); }
测试类:
public class Lambda { public static void main(String[] args) { // lambda表达式 UseAdd((int x,int y) -> { return x + y ; }); } public static void UseAdd(Math m) { System.out.println(m.add(1, 2)); } }
lambda的省略
- 可以省略数据类型
- 如果只有一个参数,()可以省略
- 代码块只有一条{}可以省略
- 在3的基础上如果有return需要省略return
接口:
public interface Person { String sing(String song1,String song2); }
测试类:
public class Lambda { public static void main(String[] args) { // 使用lambda实现 // 1.可以省略数据类型, // 但是多个参数时,只能全都省,或者全都不省 useSing((s1,s2) -> { return new String( new StringBuilder() .append(s1) .append(s2)); }); // 2.如果只有一个参数,()可以省略 // 3.代码块只有一条{}可以省略 // 4.在3的基础上如果有return需要省略return // 上述代码可以改成 useSing((s1,s2) -> new String(new StringBuilder().append(s1).append(s2))); } // 定义一个方法 public static void useSing(Person person){ // 调用接口中的方法 String sing = person.sing("歌曲1","歌曲2"); System.out.println(sing); } }
lambda和匿名内部类实现原理的区别
- 匿名内部类相比lambda会额外产生.class文件
- lambda表达式的字节码文件是在运行时动态的生成
这篇关于Lambda表达式的基础用法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?
- 2024-05-30java excel上传--poi
- 2024-05-30安装笔记本应用商店的pycharm,再安排pandas等模块,说是没有打包工具?
- 2024-05-29java11新特性
- 2024-05-29哪些无用敏捷指标正在破坏敏捷转型?
- 2024-05-29鸿蒙原生应用再新丁!新华社 入局鸿蒙
- 2024-05-29设计模式 之 迭代器模式(Iterator)