Optional< T>
: T 타입 객체의 래퍼클래스 - Optional< T>
- T가 있기때문에 모든 종류의 객체를 저장할 수 있고, null도 저장가능하다.
-> 왜 중요한가? 간접적으로 null을 다루기 위함! null을 직접 다루는 것은 위험하다.!
1) NullpointerException 예외 발생가능하기 때문이다.
2) null을 직접 다루게되면 null체크를 꼭 해줘야하는데 이는 if문 필수이므로 코드가 지저분해진다.
객체 생성하기
: Optional.of() 사용
-> str은 null이더라도 optVal은 null이 아니다.
- null대신 빈 Optional< T>객체를 사용하자
Optional<String> optVal = null; // 널로 초기화. 바람직하지 않음 Optional<String> optVal = Optional.<String>empty(); // 빈 객체로 초기화, 오른쪽<>생략가능
Optional< T> 객체의 값 가져오기
- 객체의 값 가져오기 : get(), orElse(), orElseGet(), orElseThrow()
- isPresent() : Optional객체의 값이 null이면 false, 아니면 true를 반환
OptionalInt, OptionalLong, OptionalDouble
: 기본형 값을 감싸는 래퍼클래스 -> 성능때문에 사용
- OptionalInt의 값 가져오기 - int getAsInt()
- 빈 Optional객체와의 비교