Java8新特性 - Lambda表达式
生命不息 , 写作不止 继续踏上学习之路 , 学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德分享学习心得 , 欢迎指正 , 大家一起学习成长!
文章插图
简介Lambda 表达式(lambda expression)是一个匿名函数 , Lambda表达式基于数学中的λ演算得名 , 直接对应于其中的lambda抽象(lambda abstraction) , 即没有函数名的函数 。Lambda表达式可以表示闭包(注意和数学传统意义上的不同) 。这是来自百度百科对lambda的介绍 , 实际上lambda就是简化了匿名函数的编写 , 只需一行代码就能代替繁杂的代码 。lambda主要是可以非常简洁的形式调用我们的匿名函数接口 。
简单例子首先声明一个接口 , 并且编写实现类实现这个接口
// UserServicepublic interface UserService { void add();}// UserServiceImplpublic class UserServiceImpl implements UserService { @Override public void add() { System.out.println("UserServiceImpl --- add"); }}一般来说是通过new实现类从而拿到实现中的add方法 , 如果通过new接口类就需要使用匿名内部类的形式调用接口 。IDEA会提示使用lambda表达式 。
文章插图
如下代码可以看一下对比 。
【【Java8新特性】- Lambda表达式】public static void main(String[] args) { UserService userService = new UserServiceImpl(); userService.add(); UserService user = new UserService() { @Override public void add() { // 匿名内部接口业务逻辑 System.out.println("匿名内部接口业务逻辑"); } }; // Lamdba表达式 UserService user2 = () -> System.out.println("匿名内部接口业务逻辑"); user2.add();}Lambda表达式的规范Java中的Lambda表达式的规范 , 必须是为函数接口 。
使用函数式接口使用Lambda表达式依赖于函数式接口:1、使用@FunctionalInterface注解来声明函数接口2、在这个函数接口中只能有一个抽象方法3、在函数接口中可以定义object类中的方法4、可以有静态方法*函数式接口(Functional Interface) 就是一个有且仅有一个抽象方法 , 但是可以有多个非抽象方法的接口 。更多函数式接口可以查看菜鸟联盟:https://www.runoob.com/java/java8-functional-interfaces.html
函数式接口的定义通过@FunctionalInterface注解声明接口类 , 在java中也有许多内置的函数接口 , 详情看菜鸟联盟 。
@FunctionalInterface // 声明函数式接口public interface UserService { void add(); String toString(); // Object类中的方法 static void hello() { // 静态方法 System.out.println("hello"); }}
经验总结扩展阅读
- 圆葱饼如何制作
- 字符串 P7361 「JZOI-1」拜神
- 甩手功的十大功效真有效吗
- 芒果的最佳搭配水果
- 审计中注册会计师的责任是什么
- 分式方程无解是什么意思
- 竹笋怎样保存时间更久
- 形容心情好的句子
- 眼罩哪里可以买到
- 小苏打去斑效果好吗