JDK1.8特性1

JDK1.8特性[1]接口默认方法与静态方法

说明:接口中方法有默认实现,子类实现接口时可以不用重写。是静态方法,通过调用。

运行结果:

Lambda表达式

Lambda表达式实例

说明:类似于JavaScript中的箭头表达式和python中的lambda表达式。在本例中通过Lambda表达式实现对pets列表排序,与以前的方法对比,代码更精简,可读性更好。(方便多了!)

运行结果:

Lambda表达式语法

基本语法:`左侧 -> 右侧 `

Lambda表达式参数列表

箭头操作符/Lambda操作符

Lambda方法体

语法格式1:无参数,无返回值

语法格式2:有1个参数,无返回值

语法格式3:多于2个参数,有返回值,Lambda方法体中多条语句

语法格式4:Lambda体中只有一条语句时可省略return和大括号,参数列表数据类型可省略,JVM自动类型推断

函数式接口

Lambda在Java类型系统中的实现为:每个Lambda表达式都对应一个类型,通常是接口类型。函数式接口是指仅包含一个抽象方法的接口,每一个该类型对应的Lambda表达式都会匹配到这个抽象方法。(可以添加@FunctionalInterface注解,编译器如果发现该注解标注的接口多余1个抽象方法会报错。)

Java8中四大核心函数式接口

举个例子

说明:接口定义中的T、R为范型。定义consumer为控制台输出方法,supplier为获取系统当前纳秒数方法,function为将字符串转为整数方法,predicate为判断字符串x是否为空的断言方法。

运行结果:

关于上述例子的另一种写法

说明:Java8中允许来传递方法或构造函数引用,但需要保证方法参数类型、返回值类型兼容。

Lambda作用域

在Lambda表达式中访问外部作用域的方式与匿名对象很类似,可以直接访问标记了final的外部局部变量,或实例的字段以及静态变量。

反馈与建议

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180723G1VQYX00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券