BackEnd/Java

[Java] Optional(옵셔널) 이란?

kangminhyuk1111 2024. 3. 21. 10:43

Optional

옵셔널이란 무엇인가?

옵셔널은 자바 8에서 도입된 클래스로, null 값을 안전하게 처리하기 위한 도구입니다.
옵셔널은 값이 존재하는 경우 Optional 객체에 값을 감싸서 저장하고, 값이 없는 경우에는 빈 Optional

옵셔널의 장점

NullPointerException 방지: 옵셔널을 사용하면 null 값으로 인한 NullPointerException을 예방할 수 있습니다.
코드 간결화: null 체크 코드를 생략하여 코드를 간결하게 작성할 수 있습니다.
코드 안전성 향상: null 값으로 인한 오류를 줄여 코드의 안전성을 높일 수 있습니다.

옵셔널 생성

Optional.of(value): 값이 null이 아닌 경우 옵셔널 객체를 생성합니다.
Optional.ofNullable(value): 값이 null일 수도 있는 경우 옵셔널 객체를 생성합니다.
Optional.empty(): 빈 옵셔널 객체를 생성합니다.

옵셔널 객체 활용

isPresent(): 옵셔널 객체에 값이 존재하는지 확인합니다.
get(): 옵셔널 객체에 저장된 값을 가져옵니다.
orElse(defaultValue): 옵셔널 객체에 값이 없는 경우 기본값을 반환합니다.
orElseGet(() -> defaultValue): 옵셔널 객체에 값이 없는 경우 람다 표현식을 통해 값을 생성합니다.
ifPresent(consumer): 옵셔널 객체에 값이 존재하면 람다 표현식을 실행합니다.
filter(predicate): 옵셔널 객체에 저장된 값이 특정 조건을 만족하는 경우만 새로운 옵셔널 객체를 반환합니다.
map(function): 옵셔널 객체에 저장된 값을 변환하여 새로운 옵셔널 객체를 반환합니다.
flatMap(function): 옵셔널 객체에 저장된 값을 다른 옵셔널 객체로 변환하여 새로운 옵셔널 객체를 반환합니다.

// 값이 존재하는 경우
Optional<String> name = Optional.of("John");

// 값이 존재하는지 확인
if (name.isPresent()) {
  System.out.println(name.get()); // "John" 출력
}

// 값을 가져오기
String name = Optional.ofNullable(user.getName()).orElse("Unknown");

// 값이 없는 경우 기본값 반환
int age = Optional.ofNullable(user.getAge()).orElse(18);

옵셔널은 null 값을 안전하게 처리하기 위한 도구이지만, 남발하면 코드를 복잡하게 만들 수 있습니다.
옵셔널을 사용할 필요가 없는 경우에는 무리하게 사용하지 않는 것이 좋습니다.
옵셔널을 사용하면 코드가 간결해지지만, 코드를 읽는 사람이 옵셔널에 익숙하지 않으면 이해하기 어려울 수 있습니다.
옵셔널을 사용하는 경우에는 코드에 대한 충분한 설명을 추가하는 것이 좋습니다.

반응형