posts - 325,  comments - 25,  trackbacks - 0

          *
           * 一、Optional 容器類:用于盡量避免空指針異常
           *  Optional.of(T t) : 創(chuàng)建一個 Optional 實例
           *  Optional.empty() : 創(chuàng)建一個空的 Optional 實例
           *  Optional.ofNullable(T t):若 t 不為 null,創(chuàng)建 Optional 實例,否則創(chuàng)建空實例
           *  isPresent() : 判斷是否包含值
           *  orElse(T t) :  如果調(diào)用對象包含值,返回該值,否則返回t
           *  orElseGet(Supplier s) :如果調(diào)用對象包含值,返回該值,否則返回 s 獲取的值
           *  map(Function f): 如果有值對其處理,并返回處理后的Optional,否則返回 Optional.empty()
           *  flatMap(Function mapper):與 map 類似,要求返回值必須是Optional
           */
          public class TestOptional {
           
           @Test
           public void test4(){
            Optional<Employee> op = Optional.of(new Employee(101, "張三", 18, 9999.99));
            
            Optional<String> op2 = op.map(Employee::getName);
            System.out.println(op2.get());
            
            Optional<String> op3 = op.flatMap((e) -> Optional.of(e.getName()));
            System.out.println(op3.get());
           }
           
           @Test
           public void test3(){
            Optional<Employee> op = Optional.ofNullable(new Employee());
            
            if(op.isPresent()){
             System.out.println(op.get());
            }
            
            Employee emp = op.orElse(new Employee("張三"));
            System.out.println(emp);
            
            Employee emp2 = op.orElseGet(() -> new Employee());
            System.out.println(emp2);
           }
           
           @Test
           public void test2(){
            /*Optional<Employee> op = Optional.ofNullable(null);
            System.out.println(op.get());*/
            
          //  Optional<Employee> op = Optional.empty();
          //  System.out.println(op.get());
           }

           @Test
           public void test1(){
            Optional<Employee> op = Optional.of(new Employee());
            Employee emp = op.get();
            System.out.println(emp);
           }
           
           @Test
           public void test5(){
            Man man = new Man();
            
            String name = getGodnessName(man);
            System.out.println(name);
           }
           
           //需求:獲取一個男人心中女神的名字
           public String getGodnessName(Man man){
            if(man != null){
             Godness g = man.getGod();
             
             if(g != null){
              return g.getName();
             }
            }
            
            return "蒼老師";
           }
           
           //運用 Optional 的實體類
           @Test
           public void test6(){
            Optional<Godness> godness = Optional.ofNullable(new Godness("林志玲"));
            
            Optional<NewMan> op = Optional.ofNullable(new NewMan(godness));
            String name = getGodnessName2(op);
            System.out.println(name);
           }
           
           public String getGodnessName2(Optional<NewMan> man){
            return man.orElse(new NewMan())
                .getGodness()
                .orElse(new Godness("蒼老師"))
                .getName();
           }

          posted on 2018-03-06 08:42 長春語林科技 閱讀(152) 評論(0)  編輯  收藏 所屬分類: java8
          <2018年3月>
          25262728123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

           

          長春語林科技歡迎您!

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 九龙县| 乡城县| 芦溪县| 金门县| 无锡市| 马边| 永安市| 乌兰察布市| 榆树市| 抚州市| 彰化县| 霍山县| 三穗县| 榕江县| 玛纳斯县| 阳东县| 普定县| 青铜峡市| 壶关县| 崇文区| 台东市| 敦煌市| 泸州市| 闽侯县| 睢宁县| 阿瓦提县| 临潭县| 抚州市| 嘉定区| 土默特右旗| 金昌市| 杭州市| 平谷区| 通许县| 浮山县| 铜梁县| 关岭| 新昌县| 沧州市| 黑龙江省| 镇雄县|