@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;
}