언어 ⏎/java
Optional
LeeDiculous
2022. 12. 29. 18:00
개발을 할때 우리가 자주 접하는 예외중 하나인 NullPointerException. 이 무시무시한 예외를 피하려면 null 여부를 검사해야한다.
Optional<T>는 null이 올 수 있는 값을 감싸는 Wrapper 클래스로, 참조하더라도 NullPointerException이 발생하지 않도록 도와준다.
요즘에는 객체를 Optional로 한번 감싸서 null 여부를 검사 할 수 있게 하는 추세이다.
Optional의 다양한 메소드
Optional.empty() - 값이 Null인 경우
Optional은 Wrapper 클래스이기 때문에 값이 없을 수도 있다. 이때 사용할 수 있다.
Optional.of() - 값이 Null이 아닌 경우
만약 어떤 데이터가 절대 null이 아니라면 Optional.of()로 생성할 수 있다. 만약 Optional.of()로 Null을 저장하려고 하면 예외가 발생 한다.
Optional.ofNullable() - 값이 Null일 수도, 아닐 수도 있는 경우
만약 어떤 데이터가 null이 올 수도 있고, 아닐수도 있는 경우에 사용할 수 있다.
이후에 orElse 또는 orElseGet 메소드를 이용해 값이 없는 경우라도 안전하게 값을 가져올 수 있다.
public Optional<Member> findByLoginId(String loginId) {
List<Member> all = findAll();
for (Member member : all) {
if (member.getLoginId().equals(loginId)) {
return Optional.of(member); //Optional.of() 사용
}
}
return Optional.empty(); //Optional.empty() 사용