NullPointerException
空指针异常是导致Java应⽤程序失败的最常见原因。以前,为了解决空指针异常,Google公司著名的Guava项⽬引⼊了Optional类,Guava通过使⽤检查空值的⽅式来防⽌代码污染,它⿎励程序员写更⼲净的代码。受到Google Guava的启发,Optional类已经成为Java 8类库的⼀部分。Optional实际上是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有⽤的⽅法,这样我们就不⽤显式进⾏空值检测。
Optional.of()或者Optional.ofNullable():创建Optional对象,差别在于of不允许参数是null,⽽ofNullable则⽆限制。// 参数不能是null
Optional // 参数可以是null Optional Optional Optional.empty():所有null包装成的Optional对象:Optional System.out.println(optional1 == Optional. isPresent():判断值是否存在 Optional System.out.println(optional1.isPresent() == true);System.out.println(optional2.isPresent() == false); ifPresent(Consumer consumer):如果option对象保存的值不是null,则调⽤consumer对象,否则不调⽤Optional optional1.ifPresent(new Consumer public void accept(Integer t) {System.out.println(\"value is \" + t);}}); // null,不调⽤Consumer optional2.ifPresent(new Consumer public void accept(Integer t) {System.out.println(\"value is \" + t);}}); orElse(value):如果optional对象保存的值不是null,则返回原来的值,否则返回valueOptional System.out.println(optional1.orElse(1000) == 1);// trueSystem.out.println(optional2.orElse(1000) == 1000);// true orElseGet(Supplier supplier):功能与orElse⼀样,只不过orElseGet参数是⼀个对象Optional System.out.println(optional2.orElseGet(() -> {return 1000;}) == 1000);//true orElseThrow():值不存在则抛出异常,存在则什么不做,有点类似Guava的PrecoditionsOptional // 抛出异常 optional2.orElseThrow(()->{throw new IllegalStateException();});} catch(IllegalStateException e ){ e.printStackTrace();} filter(Predicate):判断Optional对象中保存的值是否满⾜Predicate,并返回新的Optional。Optional System.out.println(filter2.get().intValue() == 1);// trueSystem.out.println(filter3.isPresent());// false map(Function):对Optional中保存的值进⾏函数运算,并返回新的Optional(可以是任何类型)Optional System.out.println(str2Optional.isPresent());// false flatMap():功能与map()相似,差别请看如下代码。flatMap⽅法与map⽅法类似,区别在于mapping函数的返回值不同。map⽅法的mapping函数返回值可以是任何类型T,⽽flatMap⽅法的mapping函数必须是Optional。 Optional Optional Optional System.out.println(str1Optional.get().get());// key1System.out.println(str2Optional.get());// key1 --------------------- 作者:aitangyong 原⽂:https://blog.csdn.net/aitangyong/article/details/54564100 版权声明:本⽂为博主原创⽂章,转载请附上博⽂链接!
因篇幅问题不能全部显示,请点此查看更多更全内容