Java:Optional

aiden·2023년 12월 20일

Java

목록 보기
30/30

Optional

옵셔널은 Java 8부터 도입된 클래스로, 값이 있을 수도 없을 수도 있는 상황을 처리하기 위한 컨테이너 클래스이다.

Optional의 값이 존재하는 경우 Optional 객체에 해당 값이 포함되며 값이 없는 경우에는 Optional.empty()를 호출하여 빈 Optional 객체를 생성한다.

이러한 방식은 null 값을 다루는 것보다 안전한 방법을 제공한다. null을 다룰 때 발생할 수 있는 NullPointerException을 방지할 수 있다.

또한 Optional은 메서드 체이닝을 통해 다양한 연산을 수행할 수 있다. 값이 존재하는 경우에만 연산을 수행하거나, 값이 없는 경우에 대한 대체값을 제공할 수 있다.

주요 메서드

  1. of: 주어진 값으로 Optional 객체를 생성한다. 만약 값이 null이라면 NullPointerException이 발생한다.

  2. ofNullable: 주어진 값으로 Optional 객체를 생성한다. 값이 null인 경우에도 Optional 객체가 생성되며 이는 값이 없는 상태를 말한다.

  3. isPresent: Optional 객체에 값이 있는지 확인힌다. 값이 존재하면 true를 반환하고, 값이 없으면 false를 반환한다.

  4. get: Optional 객체에 값이 존재한다면 해당 값을 반환하며 값이 없는 경우에는 NoSuchElementException이 발생한다. isPresent() 메서드를 통해 값의 존재 여부를 확인한 뒤에 사용하는 것이 좋다.

  5. orElse: Optional 객체에 값이 존재한다면 해당 값을 반환하고, 값이 없는 경우에는 주어진 기본값을 반환한다.

  6. orElseGet: Optional 객체에 값이 존재한다면 해당 값을 반환하고, 값이 없는 경우에는 주어진 Supplier 함수를 통해 기본값을 생성하여 반환한다.

  7. orElseThrow: Optional 객체에 값이 존재한다면 해당 값을 반환하고, 값이 없는 경우에는 주어진 Supplier 함수를 통해 예외를 발생시킨다.



Optional을 사용하는 예시는 다음과 같다.

Optional<String> optionalValue = Optional.of("Hello"); // 값이 있는 Optional 생성
Optional<String> optionalEmpty = Optional.empty(); // 값이 없는 Optional 생성

// 값이 존재하는 경우
if (optionalValue.isPresent()) {
    String value = optionalValue.get();
    System.out.println(value); // 출력: Hello
}

// 값이 없는 경우
if (optionalEmpty.isEmpty()) {
    System.out.println("Value is empty"); // 출력: Value is empty
}

// 값이 있는 경우에만 연산 수행
optionalValue.ifPresent(val -> System.out.println(val.toUpperCase())); // 출력: HELLO

// 값이 없는 경우 대체값 제공
String result = optionalEmpty.orElse("Default Value");
System.out.println(result); // 출력: Default Value

Optional은 주로 메서드의 반환 타입이나 매개변수로 사용되며 null을 반환하거나 받는 것보다 안전하고, 명확한 코드를 작성할 수 있도록 한다는 장점이 있다. 그러나 Optional을 남용하는 것은 코드의 가독성과 성능에 문제를 유발할 수 있으므로 주의해야 한다.

profile
파인애플 좋아하세요?

0개의 댓글