Java8 Optional && Guava Optional

Java8 -- Optional

boolean isPresent():与obj != null()同样;调用get()前要调用isPresent()检查,否则会报错函数

Optional的三种构造方式:fetch

Optional.of(obj):obj不能为null,否则报npespa

Optional.ofNullable(obj):obj为null时获得Optional.empty(),非null就调用Optional.of(obj)对象

Optional.empty()get

orElse(null):存在即返回,无则提供默认值io

orElseGet(() -> fetchAUserFromDatabase());:存在即返回,无则由函数来产生class

ifPresent(System.out::println);:存在就作点什么(不要if(obj.isPresent()) System.out::println;)List

obj.map(o -> o.getNames()).orElse(Collections.emptyList()):若是names有,就返回,没有就返回默认值map

map能够无限级联:obj.map(o -> o.getNames()).map(name -> name.toUpperCase()).orElse(Collections.emptyList())数据类型

Guava -- Optional

Optional.of(T):得到一个Optional对象,其内部包含了一个非null的T数据类型实例,若T=null,则马上报错

Optional.absent():得到一个Optional对象,其内部包含了空值

Optional.fromNullable(T):将一个T的实例转换为Optional对象,T的实例能够为空

boolean isPresent():若是Optional包含的T实例不为null,则返回true;若T实例为null,返回false

T get():返回Optional包含的T实例,该T实例必须不为空;不然,对包含null的Optional实例调用get()会抛出一个IllegalStateException异常

T or(T):若Optional实例中包含了传入的T的相同实例,返回Optional包含的该T实例,不然返回输入的T实例做为默认值

T orNull():返回Optional实例中包含的非空T实例,若是Optional中包含的是空值,返回null,逆操做是fromNullable()

Set<T> asSet():返回一个不可修改的set,该Set中包含Optional实例中包含的全部非空存在的T实例,且在该Set中,每一个T实例都是单态,若是Optional中没有非空存在的T实例,返回的将是一个空的不可修改的Set。

相关文章
相关标签/搜索