java.util.Optional<T> 클래스
: Optional<T>는 null이 올 수 있는 값을 감싸는 Wrapper 클래스
: Optional 인스턴스는 모든 타입의 참조 변수를 저장할 수 있다.
이러한 Optional 객체를 사용하면 예상치 못한 NullPointerException 예외를 제공되는 메소드로 간단히 회피할 수 있다.
즉, 복잡한 조건문 없이도 null값으로 인해 발생하는 예외를 처리할 수 있음.
# Optional 객체 생성하기
- of() : NPE 예외 발생 가능
- ofNullable() : 명시된 값이 null이면 비어있는 Optional 객체 반환
Optional<String> opt = Optional.ofNullable("자바 Optional 객체");
System.out.println(opt.get());
// 자바 Optional 객체
# Optional 객체에 접근하기
- get()
만약 Optional 객체 저장된 값이 null이면, NoSuchElementException 예외 발생
-> get() 메소드를 호출하기 전에 isPresent()를 사용하여 Optional 객체에 저장된 값이 null인지 아닌지 확인하자!
Optional<String> opt = Optional.ofNullable("자바 Optional 객체");
if(opt.isPresent()) {
System.out.println(opt.get());
}
# null 대신에 대체할 값을 지정하는 방법
1. orElse() : 값이 존재하지 않으면 인수로 전달된 값을 반환함
2. orElseGet() : 값이 존재하지 않으면 인수로 전달된 람다 표현식의 결괏값을 반환함
3. orElseThrow() : 값이 존재하지 않으면 인수로 전달된 예외를 발생시킴
Optional<String> opt = Optional.empty(); // Optional를 null로 초기화함.
System.out.println(opt.orElse("빈 Optional 객체"));
System.out.println(opt.orElseGet(String::new));
// 빈 Optional 객체
'뚝딱뚝딱 > Java' 카테고리의 다른 글
[Java] Stream이 뭐야! (0) | 2022.01.18 |
---|---|
[Java] interface, abstract 공부 (0) | 2022.01.18 |
[Java] 클래스 멤버, 인스턴스 멤버 (0) | 2022.01.18 |
[Java][오류] java.lang.NumberFormatException (0) | 2022.01.18 |
[Java] Wrapper class (0) | 2022.01.18 |