Lambda从入门到精通之二十四 创建Optional对象的几种方法

前面的两篇文章已经了解了Optional,如何使用Optional避免空指针,Optional的真正作用,我们本章看看Optional如何定义。

先看demo代码:

@Data
public class OptPerson {

    private String name;

    private Optional<OptCar> optCar;
	
}

@Data
public class OptCar {

    private String carName;

    private OptCarBrand optCarBrand;
}

1、创建一个空的Optional

Optional<OptCar> optCar = Optional.empty();

这其实就声明了一个空的Optional,看源码:

private static final Optional<?> EMPTY = new Optional<>();

public static<T> Optional<T> empty() {
	@SuppressWarnings("unchecked")
	Optional<T> t = (Optional<T>) EMPTY;
	return t;
}

2、创建一个值非空的Optional

Optional<OptCar> optCar2 = Optional.of(new OptCar());

看源码:

public static <T> Optional<T> of(T value) {
	return new Optional<>(value);
}

3、创建一个值可为空的Optional

Optional<OptCar> optCar3 = Optional.ofNullable(new OptCar());
这里如果值为空,那么程序自动赋值一个empty,看源码:
public static <T> Optional<T> ofNullable(T value) {
	return value == null ? empty() : of(value);
}