作家
登录

如何正确使用Java8的Optional机制

作者: 来源: 2017-11-01 09:08:11 阅读 我要评论

  •  List<Order> orderList = new ArrayList<>(); 
  •  goods.setOrderList(orderList); 
  •  goodsOptional.flatMap(g ->Optional.ofNullable(g.getOrderList())).ifPresent((v)-> System.out.println(v));  
  • orElseGet:如不雅值为空则调用指定的办法返回

    1. public T orElse(T other) { 
    2.         return value != null ? value : other; 
    3.     } 
    4.  
    5.     public T orElseGet(Supplier<? extends T> other) { 
    6.         return value != null ? value : other.get(); 
    7.     } 
    8.  
    9.     public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X { 
    10.         if (value != null) { 
    11.             return value; 
    12.         } else { 
    13.             throw exceptionSupplier.get(); 
    14.         } 
    15.     }  

    orElseThrow:如不雅值为空则直接抛出异常

    一般我们应用orElse来取值,如不雅不存在返回默认值.

    Java8带来的函数式编程特点对于习惯敕令式编程的法度榜样员来说照样有必定的┞废碍的,我们只有深刻懂得这些机制的方方面面才能应用自如。Null的处理在JAVA编程中是出了try catch之外的另一个头疼的问题,须要大年夜量的非空断定模板代码,法度榜样逻辑嵌套层次太深。尤其是对集合的应用,须要层层判空。

    4)Optional的中心处理

    filter,map,flatMap,这几个操作跟Stream的处理类似,只是要留意flatMap处理必须手动指定返回类型为Optional<U>,而map会主动将返回值包装成Optional.举个栗子,我们有商品很订单的构造:

    1. package model; 
    2.  
    3. import java.util.List; 
    4.  
    5. /** 
    6.  * @auth gongxufan 
    7.  * @Date 2017/10/23 
    8.  **/ 
    9. public class Goods { 
    10.     private String goodsName; 
    11.     private double price; 
    12.     private List<Order> orderList; 
    13.  
    14.     public String getGoodsName() { 
    15.         return goodsName; 
    16.     } 
    17.  
    18.     public void setGoodsName(String goodsName) { 
    19.         this.goodsName = goodsName; 
    20.     } 
    21.  
    22.     

        推荐阅读

        向云上迁移数据时如何避免停机和中断

      2017年架构师最重要的48个小时 | 8折倒计时 摘要:越来越多的组织须要在数据中间/云之间移动数据,然则在迁徙过程中的一个关键风险点是停机。在2017年的营业持续性意识周这里,我欲望它能供>>>详细阅读


      本文标题:如何正确使用Java8的Optional机制

      地址:http://www.17bianji.com/lsqh/38331.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)