新特性
-
Optional 類是一個可以爲null的容器對象。如果值存在則isPresent()方法會返回true,調用get()方法會返回該對象。
-
Optional 是個容器:它可以保存類型T的值,或者僅僅保存null。Optional提供很多有用的方法,這樣我們就不用顯式進行空值檢測。
-
Optional 類的引入很好的解決空指針異常。
好處
-
可以對不確定對象(可能爲null),取其中某屬性的值(可能爲nul)用很簡潔的方式進行提取;好處也不止如此。。
使用技巧
-
Optional.of() //指定的屬性不能爲null,否則會拋出NPE;
-
Optional.ofNullable() //指定的屬性可以爲null;
-
//.isPresent()是否存在 Map m =new HashMap(); Optional.ofNullable(m.get(1)).isPresent() //判斷該map中key值爲1是否存在,m可以爲null
-
Map m =new HashMap(); Optional.ofNullable(m.get(1)).get(); //取出該值,不存在時拋出NPE; //.orElse(default)值不存在時取出default的值 Optional.ofNullable(m.get(1)).orElse(10); //取出該值,不存在時取10;
-
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()); //返回用戶名
-
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));
目前就用到這麼多,等用到新的再補充!