JAVA 8 新特性

1.JAVA 8 新特性

  • Lambda表达式:Lambda允许把函数作为一个方法的参数;
  • 方法引用:方法引用提供了非常有用的语法,可以直接引用已有JAVA类或对象的方法或构造器。与Lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。
  • 默认方法:接口里面有了一个实现的方法,目的是为了解决接口的修改与现有实现的不兼容问题;
  • Stram API:把函数式编程引入到了JAVA中;
  • Date Time API:加强对日期与时间的处理;
  • Optional类:解决空指针异常;
  • Nashorn,JAVAScript引擎:JAVA8提供一个新的Nashorn JAVAScript引擎,它允许我们在JVM上允许特定的JAVAScript应用;

2.Lambda表达式

       Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中);

(parameters) -> expression  
(parameters) -> {statements;}  

       重要特征:

  • 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值;
  • 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号;
  • 可选的大括号:如果主体包含了一个语句,就不需要使用大括号;
  • 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指明表达式返回一个数值;

       变量作用域:Lambda表达式只能引用标记了final的外层局部变量,不能在Lamdba内部修改定义在域外的局部变量,否则编译报错;并且在Lamdba表达式中不允许声明一个与局部变量同名的参数;

3.方法引用

       方法引用通过方法的名字来指向一个方法,使语言的构造更加紧凑简洁,减少冗余代码,使用一对冒号::

  • 构造器引用:Class::new/Class::new
  • 静态方法引用:Class::static_method
  • 特定类的任意对象方法引用:Class::method
  • 特定对象的方法引用:instance::method

4.函数式接口

       函数式接口就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口;可以被隐式的转换为Lambda表达式,且支持Lambda表达式。也就是接口中声明了一个抽象方法,在使用前需要先实现该方法(可通过Lamdba定义实现),然后具有一些实体方法(默认方法,default修饰)调用了该抽象方法来实现相应的逻辑。

你可能感兴趣的:(JAVA 8 新特性)