728x90
Optional이란?
NPE(Null Poiter Exception)에 Optional 클래스에서 제공하는 메서드로 대응할 수 있다.
Optional 제공 메서드 : 생성
1. empty() : "비어있는" 객체 생성
Optional<String> empty = Optional.empty(); // "비어있는" Optional 타입 객체를 생성
System.out.println(empty.isPresent()); // false, 객체생성은 되었지만 값이 없으므로 false
2. of() : 값이 있는 객체 생성. Null 값이 입력되는 경우 NPE 발생 ~ Null이 확실히 발생하지 않을 경우 사용
Optional<String> empty = Optional.of("assert NotNull");
System.out.println(empty.isPresent()); // ?
3. ofNullable() : 참조 시, Null 값일 경우 "비어있는" 객체가 반환되는 객체 생성
Optional<String> empty = Optional.ofNullable(null);
System.out.println(empty.isPresent()); // ?
Optional 제공 메서드 : 최종 연산
1. ifPresent() : Optinal에서 꺼낸 객체가 존재한다면 메서드 파라미터인 코드 수행
String name = null;
Optional<String> opt = Optional.ofNullable(name);
opt.ifPresent(n -> System.out.println(n.length()));
2. orElse() : Optional의 객체가 존재한다면(값이 있다면), 객체를 반환하고 그렇지 않다면 메서드의 인자를 반환
System.out.println(Optional.ofNullable(null).orElse("냐옹"));
System.out.println(Optional.ofNullable("Hey!").orElse("냐옹"));
3. orElseThrow() : Optional 객체가 존재한다면, 객체를 반환하고 그렇지 않다면 예외 던지기
String nullName = null;
String name = Optional.ofNullable(nullName).orElseThrow(
IllegalArgumentException::new);
Optional 타입의 파라미터는 객체만 가능하다 : 기본 타입의 데이터는 클래스에서 인스턴스를 생성하여 그 인스턴스를 파라미터로 사용해야하는데, 이 때 이 클래스를 Wrapper Class라고 한다.
*Wrapper Class는 인스턴스에 저장된 값을 변경할 수 없다. 그래서 값을 변경할 경우 다시 기본 타입으로 변환 후 값을 변경해야 한다 ~ 박싱과 언박싱 (JDK 1.5부터는 자동)
728x90
'자바☕' 카테고리의 다른 글
엑셀 다운로드를 위한 엑셀 생성 로직 리팩토링 : 속도 개선 (1) | 2024.10.25 |
---|---|
엑셀 파일 생성 로직 구현 : Map 활용, 클래스 단위로 응용 가능 (2) | 2024.10.21 |
스트림 API (0) | 2022.12.11 |
함수형 인터페이스와 람다 표현식 (0) | 2022.12.11 |
Lombok (0) | 2022.12.06 |