189 8069 5689

java8新特性Optinal的作用是什么

本篇内容主要讲解“java8新特性Optinal的作用是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java8新特性Optinal的作用是什么”吧!

10年积累的做网站、成都做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有漾濞免费网站建设让你可以放心的选择与我们合作。

空指针异常可能占据了一半的异常发生率。于是oracle想用optional这类‘优雅的’解决null。想象挺美好,现实很残酷。显然optional并没有使代码变得那么优雅。看了七八篇大神的博客,不管从代码量或者代码思想上都没有什么质的改变,你仍然要时刻担心null的出现及给它相应的处理。如果你想统一处理还不如直接代码try catch  空指针异常。在我发现它真正对代码的改善前,暂且不推荐(不过阿里推荐,还是人家牛,听阿里的吧)

更新------------------------------------------------------

本着求真务实的精神,今天更加详细分析一下optional的使用方法。(根据实际开发,理论玩家无视)。

1,首先是构造方法 Optional.of(), Optional.ofNullable() ,Optional.empty()。

Optional.of():of方法在传入的参数为null时,抛出空指针异常。许多博客都说要在确定参数不为null时使用。可要是确定参数不为null,为什么要用Optional。个人观点,Optional,的所有方法中,可能会抛出空指针异常的,都违背了使用Optional的初衷。如get()方法。

Optional.empty():构造一个空值值 optional,非特殊情况无使用价值。默认就使用ofNullable()方法构造。

2,各方法的使用 

   ①isPresent() 根据是否为空返回boolean。一个挖坑又填坑的方法。直接判断参数==null?不好吗。

   ②ifPresent(Consumer)  在对象不为空时,执行Consumer(函数表达式),空时不执行。相当于if(obj==null){.....},的简便写法。你可能会说这也没什么大用啊,我的硬盘又不在乎多一行代码,再想写个else都不行。这个。。。。你说的对。 但这已经是Optional中比较有用的方法了。

   ③get() 获取optional中的值,空则抛出异常。前面说了,这个方法看不出来使用价值

   ④orElse(T other) 如果为空,用other替代。同样可用一行if替代。但你可用来装一下

   ⑤orElseThrow  如果为空抛出异常。不想评价它

   ⑥map   如果你从一个对象中想得到第若干层的子对象,每一层都要都要空值校验如,Obj=obj1.get("obj2").get("obj3").get("obj4");上一个get方法返回的值为null时,下一个get方法执行时都会抛异常。于是就要写若干层if。map则允许进行链式操作,在最后才处理null值。这是optional最值得使用的方法。

Optional.ofNullable(userEntity1).map(u -> u.getUsername())
           .map(name -> name.toUpperCase()).orElse(null);

到此,相信大家对“java8新特性Optinal的作用是什么”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


新闻标题:java8新特性Optinal的作用是什么
标题链接:http://cdxtjz.cn/article/pcpcpo.html

其他资讯