Optional map flatmap

    @Test
    public void myOPtions4(){
        Student student = new Student("smy");
        MyClass myClass = new MyClass(student);
        School school = new School(myClass);
        Optional<String> o1 = Optional.ofNullable(school).map(School::getMyClass).map(MyClass::getStudent).map(Student::getStuName);
        Optional<Optional<MyClass>> o2 = Optional.ofNullable(school).map(u -> Optional.of(u.getMyClass()));
        Optional<MyClass> o3 = Optional.ofNullable(school).flatMap(u -> Optional.of(u.getMyClass()));
    }

    @Data
    class Student{
        public Student(String stuName){
            this.stuName = stuName;
        }
        public Student(Integer age){
            this.age = age;
        }
        private String stuName;
        private Integer age;
    }
    @Data
    class MyClass{
        private MyClass(Student student){
            this.student = student;
        }
        private Student student;
    }
    @Data
    class School {
        public School(MyClass myClass){
            this.myClass = myClass;
        }
        private MyClass myClass;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章