1;背景介绍
Java 8 (又称为 jdk 1.8) 是Java 语言开发的一个主要版本。Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。
2;知识剖析
Lambda其实就是匿名方法;Java会在背后,悄悄的,把这些都还原成匿名类方式。匿名类--指的是在声明一个类的同时实例化它,使代码更加简洁精练
3;常见问题
匿名类???lambda???
4;解决方案
通常情况下,要使用一个接口或者抽象类,都必须创建一个子类
有的时候,为了快速使用,直接实例化一个抽象类,并“当场”实现其抽象方法。 既然实现了抽象方法,那么就是一个新的类,只是这个类,没有命名。 这样的类,叫做匿名类
5;编码实战
6;扩展思考
默认方法---------
7;更多讨论
1;lambda的优点?????????
与匿名类 概念相比较,Lambda其实就是匿名方法,这是一种把方法作为参数进行传递的编程思想。代码很简洁
2;接口说一下
接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法。接口只是一种形式,接口自身不能做任何事情。子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现
3;抽象类说一下
抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。
4:为什么有了抽象类还要接口???
接口只可以继承一个或多个其它接口抽象方法可以继承一个类和实现多个接口如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。接口是稍微有点慢的,因为它需要时间去寻找在类中实现的方法。
5;匿名类的概念再说一下?
匿名类指的是在声明一个类的同时实例化它,使代码更加简洁精练通常情况下,要使用一个接口或者抽象类,都必须创建一个子类有的时候,为了快速使用,直接实例化一个抽象类,并“当场”实现其抽象方法。既然实现了抽象方法,那么就是一个新的类,只是这个类,没有命名。这样的类,叫做匿名类
6;lambda的具体执行过程??
Java会在背后,悄悄的,把这些都还原成匿名类方式。引入Lambda表达式,目的就是使得代码更加紧凑,而不是各种接口和匿名类到处飞。
7;lambda有缺点吗??
1. 可读性差,与啰嗦的但是清晰的匿名类代码结构比较起来,Lambda表达式一旦变得比较长,就难以理解2. 不便于调试,很难在Lambda表达式中增加调试信息,比如日志3. 版本支持,Lambda表达式在JDK8版本中才开始支持,如果系统使用的是以前的版本,考虑系统的稳定性等原因,而不愿意升级,那么就无法使用。
8;那什么时候使用?
简单来说Lambda比较适合用在简短的业务代码中,并不适合用在复杂的系统中,会加大维护成本。
8:参考文献
http://www.runoob.com/java/java8-lambda-expressions.html
http://how2j.cn/
不足之处;欢迎指正