前言
1. Java8新增的Option类本质上类似于异常检查,迫使API用户关注/处理Option类中是否包含内容,从而避免因为null值检查而导致的潜在隐患;
2. Option不支持序列化,并且要尽量避免将Optional用于类属性、方法参数、集合元素。这三种情况可以用null值代替,没必要用Option;
3. Option本身为引用类型,大量使用在一定程度上会影响JVM的堆内存和垃圾回收;
4. 避免使用Optional的 equals()、hashCode()、==方法;参见这里
API介绍1.8
构造函数
Optional的构造函数是私有的,不能由外部调用(不能new)
static <T> Optional<T> of(T value)
如果value参数为空,会报NPE异常,一般不用;

static <T> Optional<T> ofNullable(T value)
如果value参数为空,会报No value present异常;

boolean isPresent()
判断Option中是否有元素;

T get()
T orElse(T other)
T orElseGet(Supplier<? extends T> other)
<X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X
void ifPresent(Consumer<? super T> consumer)
Optional<T> filter(Predicate<? super T> predicate)
<U> Optional<U> map(Function<? super T, ? extends U> mapper)
<U> Optional<U> flatMap(Function<? super T, Optional<U>> mapper)
Optional
原文:https://www.cnblogs.com/oxygenG/p/12594204.html