允许把函数作为参数传递到方法,简化匿名内部类代码。使用Lambda表达式的接口必须是函数式接口。
使用@FunctionalInterface标识,有且仅有一个抽象方法,可被隐式转换为lambda表达式。Java中函数式接口有Comparator、Runnable、Callable等。
可以引用已有类或对象的方法和构造方法,进一步简化 lambda 表达式。
接口可以定义 default 修饰的默认方法,降低了接口升级的复杂性,还可以定义静态方法。
引入重复注解机制,相同注解在同地方可以声明多次。注解作用范围也进行了扩展,可作用于局部变量、泛型、方法异常等。
加强了类型推测机制,使代码更加简洁。
处理空指针异常,提高代码可读性。
引入函数式编程风格,提供了很多功能,使代码更加简洁。方法包括 forEach 遍历、count 统计个数、 filter 按条件过滤、 limit 取前 n 个元素、 skip 跳过前 n 个元素、 map 映射加工、 concat 合并 stream 流等。如list集合转int数组时,list.stream().mapToInt(Integer::intValue).toArray();
增强了日期和时间 API,新的 java.time 包主要包含了处理日期、时间、日期/时间、时区、时刻和时钟等操作。
提供了一个新的 JavaScript 引擎,允许在 JVM上运行特定 JavaScript 应用。