1. 개념
T타입의 객체를 감싸는 래퍼 클래스
2. 특징
- 최종 연산의 결과를 그냥 반환하는 게 아니라 Optional 객체에 담아서 반환을 하면 반환된 결과가 null인지 매번 if문으로 체크하는 대신 Optional에 정의된 메서드를 통해서 간단히 처리 가능
- 널 체크를 위한 if문 없이도 NullPointerException이 발생하지 않는 보다 간결하고 안전한 코드를 작성하는 것이 가능
3. Optional<T> 객체 생성하기
1) of
- 값이 null이면 NullPointerException을 발생시킴
- 들어갈 값이 null 아닌 것이 확실할 때 사용
2) ofNullable
- 값이 null이어도 NullPointerException을 발생시키지 않음
- 들어갈 값이 null인 것이 확실하지 않을 때 사용
3) empty
- 변수를 빈 객체로 초기화할 때 사용
- null 을 담고 있는 Optional 객체를 리턴
Optional<String> optVal = Optional.of("abc");
Optional<String> optVal2 = Optional.ofNullable(null);
Optional<String> optVal3 = Optional.<String>empty();
4. Optional<T> 객체의 값 가져오기
1) get()
- Optional 객체에 저장된 값을 가져온다
- 값이 null일 때는 NoSuchElementException이 발생
2) orElse()
- get만을 이용해서 객체의 값을 가져올 때 NoSuchElementException이 발생하는 것을 방지하기 위해 사용
- 만약 객체의 값이 null일 때 orElse()에 지정된 값을 가져오도록 할 수 있음
3) orElseThrow()
- 값을 가져오다 null이면 예외를 발생시키도록 함
Optional<String> optVal = Optional.of("abc");
String str1 = optVal.get();
String str2 = optVal.orElse("test");
String str3 = optVal.orElseThorw(NullPointerException::new);
4) isPresent()
- Optional 객체의 값이 null이면 false를, 아니면 true를 리턴한다.
5) ifPresent()
- 값이 있으면 주어진 람다식을 실행하고, 없으면 아무 일도 하지 않는다
if(Optional.ofNullable(str).isPresent()){
System.out.println(str);
}
Optional.ofNullable(str).ifPresent(System.out::println); // str이 null이 아닐 때만 print가 된다
'자바' 카테고리의 다른 글
[자바 개념] StringTokenizer (0) | 2023.03.19 |
---|---|
[자바 개념] IO(입출력) (0) | 2023.03.19 |
[자바 개념] 정규표현식, Pattern (0) | 2023.02.10 |
[자바 개념] StringBuffer, StringBuilder (0) | 2023.02.06 |
[자바 개념] 자바 데이터 타입 (0) | 2023.01.13 |