<aside> 💡 ***이 장의 내용
null
참조의 문제점과 null
을 멀리해야 하는 이유
null
대신 Optional
: null
로부터 안전한 도메인 모델 재구현하기
Optional
활용 : null
확인 코드 제거하기
Optional
에 저장된 값을 확인하는 방법
값이 없을 수도 있는 상황을 고려하는 프로그래밍***
</aside>
다음처럼 자동차와 자동차 보험을 갖고 있는 사람 객체를 중첩 구조로 구현했다고 하자.
public class Person {
private Car car;
public Car getCar() { return car; }
}
public class Car {
private Insurance insurance;
public Insurance getInsurance() { return insurance; }
}
public class Insurance {
private String name;
public String getName() { return name; }
}
public String getCarInsuranceName(Person person) {
return person.getCar().getInsurance().getName();
}
getCar
를 호출하면 어떤 일이 일어날까?null
참조를 반환하는 방식으로 표현한다. → NullPointerException
발생!NullPointerException
줄이기예기치 않은
NullPointerException
을 피하려면?
null
확인 코드를 추가한다.public String getCarInsuranceName(Person person) {
if (person != null) {
Car car = person.getCar();
if (car != null) {
Insurance insurance = car.getInsurance();
if (insurance != null) {
return insurance.getName();
}
}
}
return "Unknown";
}