前言
Java 8
(又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。
Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。
-
Optional 类 : Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常。
-
方法引用 : 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。
-
Lambda 表达式 : Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)。
-
Stream API : 新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。
-
默认方法 : 默认方法就是一个在接口里面有了一个实现的方法。为了解决接口的修改与现有的实现不兼容的问题。
-
@FunctionalInterface : 函数式接口, 一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。
Optional
概念
- Optional 类是一个可以为null的容器对象。如果值存在则
isPresent()
方法会返回true,调用get()
方法会返回该对象。 - Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。
- Optional 类的引入很好的解决空指针异常。
主要API
-
T
get()
: 如果在这个Optional中包含这个值,返回值,否则抛出异常:NoSuchElementException
. -
Optional
filter
(Predicate<? super predicate) : 如果值存在,并且这个值匹配给定的 predicate,返回一个Optional用以描述这个值,否则返回一个空的Optional -
boolean
isPresent
() : 如果值存在则方法会返回true,否则返回 false。 -
Optional
map
(Function<? super T,? extends U> mapper) : 如果有值,则对其执行调用映射函数得到返回值。如果返回值不为 null,则创建包含映射返回值的Optional作为map方法返回值,否则返回空Optional。 -
static Optional
ofNullable
(T value) : 如果为非空,返回 Optional 描述的指定值,否则返回空的 Optional。 -
T
orElse
(T other) : 如果存在该值,返回值, 否则返回 other。
实例
返回值
public Optional<Admin> getOptionalAdmin(int id) {
// Optional.ofNullable - 允许传递为 null 参数
return Opt