[자바1.8기술]옵셔널 Optional

gov's avatar
Nov 20, 2024
[자바1.8기술]옵셔널 Optional
Contents
출력
💡
null 값을 직접 다루는 대신 안전하게 처리할 수 있도록 도와주는 컨테이너
코드에서 직접 null 체크 하지 않아도 값 처리 및 예외 처리 가능
  • ofNullable(): null 여부와 상관없이 Optional 객체 생성. 값이 null이면 비어 있는 Optional 객체를 반환.
  • isPresent(): Optional 안에 값이 존재하는지 확인. 값이 있으면 true, 없으면 false 반환
  • orElse(): Optional 값이 없을 경우(default 값) 반환
  • orElseThrow(): 값이 없을 경우 지정된 예외를 발생
  • get(): Optional 안에 있는 값을 직접 꺼냄 단, 값이 없으면 NoSuchElementException이 발생하므로 사용 시 isPresent()로 확인 후 호출해야 안전
import java.util.Optional; public class App { public static void main(String[] args) { String data1 = null; Optional<String> op1 = Optional.ofNullable(data1); // null이 가능한 if (op1.isPresent()) { String r1 = op1.get(); System.out.println("r1 : " + r1); // 실행안됨 } // 람다 적용하기 -여러개중 람다 인터페이스 이름 존재 시, 적용 String data2 = null; // null이면 무엇을 공급할건지 // .get 바로 사용불가 String r2 = Optional.ofNullable(data2).orElseGet(() -> "없어"); System.out.println("r2 : " + r2); String data3 = null; // 터트리게 설정 -이때 메세지 출력 설정하기 // 값을 찾으면 줌. 값이 없으면(null이니) throw해라 String r3 = Optional.ofNullable(data3).orElseThrow(() -> new RuntimeException("값이 없는데? 조심해 너")); System.out.println("r3 : " + r3); } }

출력

notion image

출력 설명

  1. op1.isPresent()에서 값이 없으므로 아무 작업도 실행되지 않음
  1. orElseGet()을 사용해 값이 없을 경우 "없어"를 제공해 안전하게 처리
      • 출력: r2 : 없어
  1. orElseThrow()를 사용해 값이 없으므로 RuntimeException을 던짐
      • 예외 메시지 출력: "값이 없는데? 조심해 너"
 
Share article

goho