Java Optional 클래스
java.util.Optional<T> 클래스
Optional<T> 클래스는 Integer나 Double 클래스처럼 T 타입의 객체를 포장해주는 래퍼 클래스 (Wrapper class) 입니다.
Optional 인스턴스는 모든 타입의 참조 변수를 저장할 수 있습니다.
Optional 객체를 사용하면 NullpointerException 예외를 제공하는 메소드로 간단하게 회피할 수 있습니다.
if 문을 이용하거나 복잡한 조건문을 만들지 않아도 Optional 클래스에서 제공하는 메소드로 예외 처리를 할 수 있습니다.
Optional의 객체 생성 방법
of() 메소드나 ofNullable() 메소드를 사용하여 Optional 객체를 생성할 수 있습니다.
Optional<String> opt1 = Optional.of("test"); System.out.println(opt1.get()); Optional<String> opt2 = Optional.ofNullable("test"); System.out.println(opt2.get());
Optional 객체의 접근
get() 메소드를 사용하면 Optional 객체에 저장된 값에 접근할 수 있습니다.
만약 Optional 객체에 저장된 값이 null 이라면 NoSuchElementException 예외가 발생됩니다.
따라서 get() 메소드를 호출하기 전에 isPresent() 메소드를 사용하여 Optional 객체에 저장된 값이 null인지 아닌지를 먼저 확인한 후 호출하는 것이 좋습니다.
isPresent() 메소드를 이용하여 Optional 객체에 저장된 값에 접근하는 예제 입니다.
Optional<String> opt = Optional.ofNullable("Optional 객체"); if(opt.isPresent()){ // null 체크 System.out.println(opt.get()); }
Optional 메소드에서 null 대신 대체할 값을 지정할 수 있습니다.
Optional<String> opt = Optional.empty(); // Optional 객체를 초기화 System.out.println(opt.orElse("빈객체"); System.out.println(opt.orElseGet(String::new);