在Java8中新增了一個Optional類,官方描述是該類是一個容器對象,其中可能包含一個空或非空的值。若是存在一個值,isPresent()將返回true,get()將返回該值。 public class OptionalTest { /** * of後面接給optional設置的值 可是不能爲空 若是爲空會報空指針異常 * @Title: ofTest * @Description: TODO * @param: * @return: void * @throws */ // @Test public void ofTest() { Optional<String> optional = Optional.of("123"); System.out.println(optional.get()); try { optional = Optional.of(null); System.out.println(optional.get()); //get方法是獲取optional的值 類型取決於聲明的時候 }catch(NullPointerException e) { System.out.println("空指針異常"); } } /** * ofNullable 和of相似 可是ofNullable能夠設置null值 若是是Null值得話取值會報NoSuchElementException 異常 * @Title: ofNullableTest * @Description: TODO * @param: * @return: void * @throws */ // @Test public void ofNullableTest() { Optional<String> optional = Optional.ofNullable("123"); System.out.println(optional.get()); try { optional = Optional.ofNullable(null); System.out.println(optional.get()); }catch(NoSuchElementException e) { System.out.println("NoSuchElementException 異常"); } } /** * ifPresent用來判斷optional中有沒有值存在 若是有則爲真 * @Title: isPresentTest * @Description: TODO * @param: * @return: void * @throws */ // @Test public void isPresentTest() { Optional<String> optional = Optional.ofNullable(null); if(optional.isPresent()) { System.out.println(optional.get()); } else { System.out.println("值爲空"); } } /** * ifPresent和isPresent相似 只不過它支持λ表達式 * @Title: ifPresentTest * @Description: TODO * @param: * @return: void * @throws */ // @Test public void ifPresentTest() { Optional<String> optional = Optional.ofNullable("123"); optional.ifPresent(var ->{ System.out.println(var); }); } /** * orElse方法,若是值爲空的話會用參數中的值去替換 即設置默認值 * @Title: orElseTest * @Description: TODO * @param: * @return: void * @throws */ // @Test public void orElseTest() { Optional<String> optional = Optional.ofNullable("123"); System.out.println(optional.orElse("有沒有")); optional = Optional.ofNullable(null); System.out.println(optional.orElse("有沒有")); } /** * orElseGet方法 和orElse相似 不過此方法接受Supplier接口的實現用來生成默認值 * @Title: orElseGetTest * @Description: TODO * @param: * @return: void * @throws */ // @Test public void orElseGetTest() { Optional<String> optional = Optional.ofNullable("123"); System.out.println(optional.orElseGet(()->"123456")); optional = Optional.ofNullable(null); System.out.println(optional.orElseGet(()->"123456")); } /** * map方法 若是有值則會對值進行mapping中的處理 處理結果存在則建立並返回Optional類型的結果 不然返回空 * @Title: mapTest * @Description: TODO * @param: * @return: void * @throws */ // @Test public void mapTest() { Optional<String> optional = Optional.ofNullable("abc"); System.out.println(optional.map(var->var.toUpperCase()).get()); } /** * flatMap和map相似 只不過mapping中必須返回Option類型的數據 * @Title: flatMapTest * @Description: TODO * @param: * @return: void * @throws */ // @Test public void flatMapTest() { Optional<String> optional = Optional.ofNullable("abc"); System.out.println(optional.flatMap(var->Optional.of(var.toUpperCase())).get()); } /** * filter對optional進行過濾,mapping中爲過濾的條件 若是不知足條件 返回一個爲空的Optional * @Title: filterTest * @Description: TODO * @param: * @return: void * @throws */ @Test public void filterTest() { try { Optional<String> optional = Optional.ofNullable("一二三四五六七八"); System.out.println(optional.filter(var ->var.length()>6).get()); System.out.println(optional.filter(var ->var.length()<6).get()); }catch(NoSuchElementException e) { System.out.println("optional的值爲空"); } }
查看更詳細數據請點擊連接:app
https://blog.csdn.net/hj7jay/article/details/52459334
spa