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 長春語林科技 閱讀(149) 評論(0)  編輯  收藏 所屬分類: java8
          <2018年3月>
          25262728123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

           

          長春語林科技歡迎您!

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 德州市| 鄂温| 峨边| 简阳市| 福州市| 贵德县| 南和县| 疏附县| 阿图什市| 东莞市| 蕉岭县| 友谊县| 象州县| 塔河县| 布尔津县| 商城县| 南昌市| 弥勒县| 古田县| 靖西县| 都安| 荥阳市| 理塘县| 沙田区| 鄂伦春自治旗| 赤水市| 耿马| 昌图县| 滨海县| 洱源县| 普兰县| 泽库县| 温宿县| 碌曲县| 贺兰县| 南江县| 蓝山县| 吉林省| 紫阳县| 长乐市| 策勒县|