본문 바로가기
JAVA

Optional 클래스

by MINNI_ 2021. 8. 4.

1. java.util.Option<T> 클래스

  • 정의
    - T 타입의 객체를 포장해주는 래퍼 클래스(Wrapper class) ⇒ Optional 인스턴스는 모든 타입의 참조변수 저장 가능
    - NullPointerException 예외 처리 가능

 

2. Optional 객체의 생성

  • of() 메소드
    - null이 아닌 명시된 값을 가지는 Optional 객체 반환
    - Option 객체에 null값 저장 → NullPointerException 예외 발생
  • ofNullable() 메소드
    - 명시된 값이 null이 아니면 명시된 값을 가지는 Optional 객체 반환
    - 명시된 값 null → 비어있는 Optional 객체 반환
Optional<String> opt = Optional.ofNullable("자바 Optional 객체");
System.out.println(opt.get());

## 실행 결과 ##
자바 Optional 객체

 

3. Optional 객체의 접근

  • get() 메소드
    - Optional 객체값 null →  NoSuchElementException 예외 발생
  • 해결법 1 : null값 확인 후 호출
    1) isPresent() → get()
      - isPresent() 메소드로Optional 객체에 저장된 값이 null인지 아닌지를 확인한 후 get() 메소드 호출
Optinal<String> opt = Optional.ofNullable("자바 Optional 객체");
if(opt.isPresent()){
	System.out.println(opt.get());
}

## 실행 결과 ##
자바 Optional 객체
  • 해결법 2 : null 대신에 대체할 값 지정
    1) orElse() : 저장된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 값을 반환
    2) orElseGet() : 저장된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 람다 표현식의 결괏값을 반환
    3) orElseThrow() : 저장된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 예외를 발생
Optional<String> opt = Optional.empty(); // Optional를 null로 초기화함.

System.out.println(opt.orElse("빈 Optional 객체"));

## 실행 결과 ##
빈 Optional 객체

 

4. Optional 메소드


[ 출처 ]

 

http://tcpschool.com/java/java_stream_optional

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

댓글