首页 > 其他 > 详细

Optional

时间:2020-03-29 19:40:53      阅读:59      评论:0      收藏:0      [点我收藏+]

前言

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)

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!