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
'JAVA' 카테고리의 다른 글
Stream(스트림) (0) | 2021.08.09 |
---|---|
CH07. 제네릭, 열거형, 컬렉션 (0) | 2021.08.04 |
CH06. java.lang 패키지와 유용한 클래스 (0) | 2021.05.10 |
[Tip] static 메서드의 오버라이딩 불가 (0) | 2021.05.07 |
CH05. 상속, 오버라이딩, package, 제어자, 다형성, 추상클래스, 인터페이스 (0) | 2021.05.03 |
댓글