Java8新特性之Lambda
2021/10/15 22:44:11
本文主要是介绍Java8新特性之Lambda,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
接口的默认方法:
-
Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法
interface Formula { double calculate(int a); default double sqrt(int a) { return Math.sqrt(a); } }
-
例子: Formula接口在拥有calculate方法之外同时还定义了sqrt方法,实现了Formula接口的子类只需要实现一个calculate方法,默认方法sqrt将在子类上可以直接使用
Formula formula = new Formula() { @Override public double calculate(int a) { return sqrt(a * 100); } }; formula.calculate(100); // 100.0 formula.sqrt(16); // 4.0
Lambda 表达式:
-
第一种:
Collections.sort(names, (String a, String b) -> { return b.compareTo(a); });
-
第二种: 对于函数体只有一行代码的,你可以去掉大括号{}以及return关键字
Collections.sort(names, (String a, String b) -> b.compareTo(a)
-
第三种: Java编译器可以自动推导出参数类型,所以你可以不用再写一次类型
Collections.sort(names, (a, b) -> b.compareTo(a)
函数式接口
-
每一个lambda表达式都对应一个类型,通常是接口类型。而***函数式接口*是指仅仅只包含一个抽象方法的接口,每一个该类型的lambda表达式都会被匹配到这个抽象方法。因为默认方法不算抽象方法,所以你也可以给你的函数式接口添加默认方法。
-
可以将lambda表达式当作任意只包含一个抽象方法的接口类型,确保你的接口一定达到这个要求,你只需要给你的接口添加 @FunctionalInterface 注解,编译器如果发现你标注了这个注解的接口有多于一个抽象方法的时候会报错的。
@FunctionalInterface interface Converter<F, T> { T convert(F from); } Converter<String, Integer> converter = (from) -> Integer.valueOf(from); Integer converted = converter.convert("123"); System.out.println(converted); // 123
方法与构造函数引用:
-
Java 8 允许你使用**:
这篇关于Java8新特性之Lambda的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-12百万架构师第十五课:源码分析:Spring 源码分析:SpringMVC核心原理及源码分析|JavaGuide
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide