[Java8] null 대신 Optional

null 대신 Optional

값이 없는 상황을 어떻게 처리할까?

null 때문에 발생하는 문제

Optional 클래스 소개

Optional 클래스 소개

Optional 적용 패턴

Optional 객체 만들기

Optional<Car> optCar = Optional.empty();
Optional<Car> optCar = Optional.of(car);
Optional<Car> optCar = Optional.ofNullable(car);

맵으로 Optional의 값을 추출하고 변환하기

// 기존 코드
String name = null;
if(insurance != null) {
  name = insurance.getName();
}

// Optional 사용 코드
Optional<Insurance> optlnsurance = Optional .ofNullable(insurance);
Optional<String> name = optlnsurance.map(Insurance::getName);

flatMap으로 Optional 객체 연결

Optional<Person> optPerson = Optional.of(person);
Optional<String> name =
    optPerson.map(Person::getCar)
        .map(Car::getlnsurance)
        .map(Insurance::getName);
public String getCarlnsuranceName(Optional<Person> person) {
  return person.flatMap(Person::getCar)
               .flatMap(Car::getlnsurance)
               .map(Insurance::getName)
               .orElse("Unknown");
}

Optional

Optional 클래스의 메서드

Optional 클래스의 메서드

요약