728x90
Optional<T>
Generic 클래스로 T타입의 객체를 감싸는 래퍼 클래스로서, 최종 결과를 그냥 반환하는 게 아니라 Optional 객체에 담아서 반환
Why? 왜 쓸까?
반환된 결과가 null인지 매번 if문으로 체크하는 대신 Optional에 정의된 메서드를 통해 간단히 처리 가능
if문 없이 NullPointerException 발생x
간결, 안전한 코드
Wrapper Class
자바의 자료형 : 기본 타입 | 참조 타임
기본 타입 : char, int, float, double, boolean ...
참조 타입 : class, interface, ...
기본 타입의 데이터를 객체로 표현해야 할 때가 존재 -> 래퍼 클래스 사용!
모든 기본타입은 값을 갖는 객체 생성 가능 (포장 객체) -> 기본 타입 값은 외부에서 변경 x
박싱 : 기본 타입 -> 포장 객체
언박싱 : 포장 객체 -> 기본 타입
* 래퍼 객체끼리 비교 위해 == 연산자 사용 X ( ∵ == 연산자는 내부 값이 아니라 참조 주소를 비교 & 래퍼는 객체이므로 참조 주소 다름), equals 사용해야 함
But, 래퍼 클래스와 기본자료형 비교는 ==, equals 모두 가능 ( ∵ 컴파일러가 자동으로 auto박싱, 언박싱)
Optional 객체 생성하기
of() 또는 ofNullable() 를 사용하여 만든다.
1. of() 사용
String str = "abc";
Optional<String> optval = optional.of(str);
Optional<String> optval = optional.of("abc");
Optional<String> optval = optional.of(new String ("abc"));
2. ofNullable() 사용
참조변수의 값이 null이 가능성 있으면, ofNullable() 사용
of()는 NullPointerException 발생 ㅇ
Optional<String> potVal = Optional.ofNullable(null); // OK
+ 참조변수를 기본값으로 초기화
null보단 empty() 빈 객체로 초기화하는 것이 바람직
Optional<String> optVal = Optional.<String>empty();
Optional 객체 값 가져오기
1. get() 사용
null이면 NoSuchElementException 발생
Optional<String> optVal = Optional.of("abc");
String str1 = optVal.get();
2. orElse()
null이면 ""를 반환
String str2 = optVal.orElse("");
참고 : Java의 정석 3rd Edition
728x90
'Programming > JAVA' 카테고리의 다른 글
[JAVA] Map과 HashMap의 차이 (0) | 2024.03.08 |
---|---|
[JAVA] 간단한 회원관리 프로그램 (0) | 2024.01.10 |
[JAVA] 10. 패키지 (1) | 2023.10.23 |
[JAVA] 9. 추상클래스와 인터페이스 (0) | 2023.10.23 |
[JAVA] 8. 상속과 다형성 (0) | 2023.10.19 |