사용자 주소는 nullable 경계마다 Optional chain으로 안전하게 탐색한다

중간 객체 하나라도 없을 수 있는데 마지막 값만 null 검사하면 앞 단계 dereference에서 실패합니다.

  1. 1

    findUser

    Optional<User>

  2. 2

    flatMap address

    Optional<Address>

  3. 3

    map city

    Optional<String>

  4. 4

    filter nonBlank

    유효한 도시

  5. 5

    orElse

    배송지 미등록

핵심: 각 getter가 nullable이면 map이 empty를 전파하고 Optional 반환이면 flatMap으로 연결합니다.