*/What I did today

null 대신 Optional 클래스

haileykim2014 2023. 1. 2. 00:59

null 때문에 발생하는 문제

  • 에러의 근원 : NPE
  • 코드를 어지럽힌다. : 중첩된 null 확인 코드
  • 형식 시스템에 구멍을 만듦  : null이 할당되면 시스템의 다른부분으로 null이 퍼졌을때 애초에 null이 어떤 의미로 사용되었는지 알 수 없음

Optional클래스를 사용

메서드의 시그니처만 보고도 선택형 값인지 여부를 구별 할 수 있다.

public class Person{
	private Optional<Car> car; //사람이 차를 소유했을 수도 소유하지 않았을 수도 있다
    public Optional<Car> getCar();{
    	return car;
        }
    }

 

Optional 사용 

  • 잠재적 null이 될 수 있는 대상을 Optional로 감싸기
  • 팩토리메서드 Optional.empty , Optional.of , Optional.ofNullable 이용해서 Optional 객체 만들기
Optional<Object> value = Optional.ofNullable(map.get)"key"));