[내배캠/TIL(6/8)]Optional class란?

손홍서·2022년 6월 8일
0

Java

목록 보기
8/11

day33 TIL

Optional<T> 클래스

Integer나 Double 클래스처럼 'T'타입의 객체를 포장해 주는 래퍼 클래스(Wrapper class)이다.
따라서 Optional 인스턴스는 모든 타입의 참조 변수를 저장할 수 있다!
이러한 Optional 객체를 사용하면 예상치 못한 NullPointerException 예외를 제공되는 메소드로 간단히 회피할 수 있다.

Optional<String> opt = Optional.ofNullable("Optional"); //객체 생성
System.out.println(opt.get()); //Optional

ofNullable() 메소드는 명시된 값이 null이 아니면 명시된 값을 가지는 Optional 객체를 반환
명시된 값이 null이면 비어있는 Optional 객체를 반환, 만약 Optional 객체에 저장된 값이 null이면, NoSuchElementException 예외가 발생

Optional<String> opt = Optional.ofNullable("Optional"); //객체 생성
if(opt.isPresent()) {
	System.out.println(opt.get()); //Optional
}

get() 메소드를 호출하기 전에 isPresent() 메소드를 사용하여 Optional 객체에 저장된 값이 null인지 아닌지를 먼저 확인한 후 호출하는 것이 좋다.

이 방법 외에 orElse(), orElseGet()을 사용해 null대신 대체할 값을 지정할 수 있다.

  1. orElse(): 저장된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 값을 반환
  2. orElseGet() : 저장된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 람다 표현식의 결괏값을 반환
  3. orElseThrow() 메소드 : 저장된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 예외를 발생시.
Optional<String> opt = Optional.empty(); // Optional를 null로 초기화함.

System.out.println(opt.orElse("emplty")); // empty

System.out.println(opt.orElseGet(String::new));

http://www.tcpschool.com/java/java_stream_optional

profile
Hello World!!

0개의 댓글