본문 바로가기

코딩/JAVA 공부

[JAVA] 자바의 정석 _ Optional<T>

 * Optional<T>

- T 타입 객체의 래퍼클래스

public final class Optional<T>{
    private final T value;	// T타입의 참조변수
    ...
}

래퍼클래스 : Integer, Long 같이 그 타입을 가지고 있는 클래스

Optional 은 모든 종류의 객체 저장 가능! 

null도 저장할 수 있음. NullpointException 방지 가능, null 체크 시  if문 사용해 지저분해지는 것 방지

 

- Optional<T> 객체 생성하기

String str = "abc";
Optional<String> optVal = Optional.of(str);
Optional<String> optVal = Optional.of("abc");
Optional<String> optVal = Optional.of(null);	// NullPointerException 발생
Optional<String> optVal = Optional.ofNullable(null);

- null 대신 빈 Optional<T> 객체를 사용하자.

Optional<String> optVal = Optional.empty();	// 빈 객체로 초기화

 

- Optional<T> 객체의 값 가져오기 - get(), orElse(), orElseGet(), orElseThrow()

Optional<String> optVal = Optional.of("abd");
String str1 = optVal.get();	 // null 이면 예외 발생
String str1 = optVal.orElse(""); // null 이면 "" 반환
String str1 = optVal.orElseGet(String::new); // 람다식 사용 가능
String str1 = optVal.orElseThrow(NullPointerException::new);	// 널이면 예외 발생

 

- isPresent() : Optional 객체의 값이 null이면 false, 아니면 true 반환