posts - 325,  comments - 25,  trackbacks - 0

          *
           * 一、Optional 容器類:用于盡量避免空指針異常
           *  Optional.of(T t) : 創建一個 Optional 實例
           *  Optional.empty() : 創建一個空的 Optional 實例
           *  Optional.ofNullable(T t):若 t 不為 null,創建 Optional 實例,否則創建空實例
           *  isPresent() : 判斷是否包含值
           *  orElse(T t) :  如果調用對象包含值,返回該值,否則返回t
           *  orElseGet(Supplier s) :如果調用對象包含值,返回該值,否則返回 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 長春語林科技 閱讀(153) 評論(0)  編輯  收藏 所屬分類: java8
          <2018年3月>
          25262728123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

           

          長春語林科技歡迎您!

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 东至县| 开鲁县| 柘荣县| 新丰县| 融水| 青川县| 嘉义县| 襄汾县| 米泉市| 万全县| 巫山县| 惠来县| 饶阳县| 沾化县| 蓬溪县| 玉林市| 阳谷县| 鄱阳县| 巴林左旗| 祁阳县| 宜良县| 邵东县| 始兴县| 含山县| 保亭| 应城市| 黄浦区| 张掖市| 长寿区| 大邑县| 南汇区| 梓潼县| 香港| 潮安县| 永安市| 双峰县| 伊宁市| 棋牌| 满洲里市| 桂阳县| 东阿县|