最常見的Optional操作

新特性

  1. Optional 類是一個可以爲null的容器對象。如果值存在則isPresent()方法會返回true,調用get()方法會返回該對象。

  2. Optional 是個容器:它可以保存類型T的值,或者僅僅保存null。Optional提供很多有用的方法,這樣我們就不用顯式進行空值檢測。

  3. Optional 類的引入很好的解決空指針異常。

好處

  • 可以對不確定對象(可能爲null),取其中某屬性的值(可能爲nul)用很簡潔的方式進行提取;好處也不止如此。。

使用技巧

  1. Optional.of() //指定的屬性不能爲null,否則會拋出NPE;
  2. Optional.ofNullable() //指定的屬性可以爲null;
  3. //.isPresent()是否存在 
    Map m =new HashMap();
    Optional.ofNullable(m.get(1)).isPresent() //判斷該map中key值爲1是否存在,m可以爲null
  4. Map m =new HashMap();
    Optional.ofNullable(m.get(1)).get(); //取出該值,不存在時拋出NPE;
    //.orElse(default)值不存在時取出default的值
    Optional.ofNullable(m.get(1)).orElse(10); //取出該值,不存在時取10;
  5. UserDto userDto =new UserDto();
    userDto.setUserName("http://minwk.top/");
    //.map()可以映射返回對象指定屬性的值
    System.out.println(Optional.ofNullable(userDto).map(UserDto::getUserName).get()); //返回用戶名
    System.out.println(Optional.ofNullable(userDto).map(u->u.getUserName()).get()); //返回用戶名
  6. UserDto userDto = null;
    Optional.ofNullable(userDto).map(u->u.getUserName()).orElse("http://minwk.top/"); //userDto對象爲空時返回默認值,u.getUserName()爲空時也會返回默認值,相當之簡潔
    ​
    Map<Integer, CommodityAreaInfo> commodityInfoMap = null;
    System.out.println(Optional.ofNullable(commodityInfoMap)
                       //取commodityInfoMap中key=1的對象
                    .map(c->c.get(1))
                       //取commodityInfoMap中key=1的對象,再取該對象的getSellingPrice
                    .map(CommodityAreaInfo::getSellingPrice).orElse(BigDecimal.TEN));

目前就用到這麼多,等用到新的再補充!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章