본문 바로가기
Java/Java이론

Optional 클래스

by P_eli 2023. 11. 29.
728x90
반응형

자바 프로그래밍에서 자주 사용되는 Optional 클래스에 대해 알아보려고 합니다. Optional 클래스는 자바 8부터 도입되어, 값이 없는 상황을 다룰 때 매우 유용한 도구로 자리 잡았습니다. 그럼 함께 살펴보겠습니다.

 

Optional이란?

Optional 클래스는 자바에서 값이 없을 수 있는 상황에 대한 해결책으로 등장했습니다. 이전에는 메서드가 값을 반환할 때 null을 사용했지만, 이는 가독성과 유지보수 측면에서 문제가 많았습니다. Optional은 이러한 null을 대체하면서 명시적으로 값이 없음을 표현할 수 있게 해줍니다.

 

Optional의 생성

Optional 객체는 다양한 방법으로 생성할 수 있습니다. 가장 간단한 방법은 Optional.of(value)를 사용하는 것입니다. 만약 값이 null이 될 수 있는 상황이라면 Optional.ofNullable(value)를 사용하여 Optional을 생성할 수 있습니다.

String name = "John";
Optional<String> optionalName = Optional.of(name);

 

값의 존재 여부 확인

Optional을 사용하면 값을 확인하기 전에 값이 존재하는지 여부를 손쉽게 확인할 수 있습니다. isPresent() 메서드를 사용하여 값의 존재 여부를 확인할 수 있습니다.

if (optionalName.isPresent()) {
    System.out.println("Name: " + optionalName.get());
} else {
    System.out.println("Name is not present.");
}

 

값이 없을 때 기본값 설정

만약 값이 존재하지 않을 때 기본값을 설정하고 싶다면 orElse(defaultValue) 메서드를 사용할 수 있습니다.

String name = null;
String defaultName = Optional.ofNullable(name).orElse("Guest");
System.out.println("Welcome, " + defaultName);

 

값이 없을 때 예외 처리

값이 없는 상황에서 예외를 발생시키고 싶다면 orElseThrow(exceptionSupplier) 메서드를 사용할 수 있습니다.

String name = null;
String result = Optional.ofNullable(name)
    .orElseThrow(() -> new IllegalArgumentException("Name must not be null"));

 

값이 있는 경우에 처리하기

값이 있는 경우에 특정 작업을 수행하고 싶다면 ifPresent(consumer) 메서드를 사용할 수 있습니다.

Optional<String> optionalName = Optional.of("John");
optionalName.ifPresent(n -> System.out.println("Hello, " + n));

 

함수형 프로그래밍과의 연동

Optional은 함수형 프로그래밍과의 연동이 원활하게 이루어집니다. map, filter, flatMap 등의 메서드를 활용하여 값의 변환 및 조건부 처리를 간편하게 할 수 있습니다.

String result = Optional.of("John")
    .map(String::toUpperCase)
    .orElse("Default");
System.out.println(result);

 

 

 

자바의 Optional 클래스는 값이 없는 상황을 다룰 때 코드의 가독성을 높이고 예외 처리를 간편하게 할 수 있는 강력한 도구입니다. 올바르게 활용하면 코드의 신뢰성을 높일 뿐만 아니라 유지보수성도 향상시킬 수 있습니다.

728x90
반응형