Java 8、9 语言新特性

Java语言新特性

Java8

Java 8 新特性

  • Lambda 表达式

    Lambda表达式(也叫做闭包)是Java 8中最大的也是期待已久的变化。它允许我们将一个函数当作方法的参数(传递函数),可以用于替代匿名内部类。

  • 函数式接口(@FunctionalInterface)

    函数式接口就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换为 lambda 表达式。加不加 @FunctionalInterface 对于接口是不是函数式接口没有影响,该注解只是提醒编译器去检查该接口是否仅包含一个抽象方法.函数式接口里允许定义默认方法及静态方法。

    JDK 1.8 之前已有的函数式接口:

    java.lang.Runnable

    java.util.concurrent.Callable

    java.security.PrivilegedAction

    java.util.Comparator

    java.io.FileFilter

    java.nio.file.PathMatcher

    java.lang.reflect.InvocationHandler

    java.beans.PropertyChangeListener

    java.awt.event.ActionListener

    javax.swing.event.ChangeListener

    JDK 1.8 新增加的函数接口:

    java.util.function

  • 方法引用

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

    构造器引用:它的语法是Class::new,或者更一般的Class< T >::new

    静态方法引用:它的语法是Class::static_method

    特定类的任意对象的方法引用:它的语法是Class::method

    特定对象的方法引用:它的语法是instance::method

  • 默认方法

    默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法.

    当需要修改接口时候,需要修改全部实现该接口的类,所以引进的默认方法的目的是为了解决接口的修改与现有的实现不兼容的问题。

  • Stream

    流操作 操作符类似rxjava

  • Optional 类

    Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。Optional 类的引入很好的解决空指针异常

  • Nashorn JavaScript

  • 更高效的Date API

  • 内置了Base64编解码器

Java9

Java9新特性

你可能感兴趣的:(Java 8、9 语言新特性)