📘 Optional이란?
Null 값을 감싸는 Wrapper클래스이며, Null값을 참조 또는 사용하더라도 NullPointException(NPE)가 발생하지 않게 도와준다.
Java8에서 도입된 클래스이며, Optional<T> 클래스를 사용해 NullPointException(NPE)를 방지할수 있다.
📎 Optional 특징 ?
- 값이 없을때 적절한 처리( Ex. 기본값 제공, 예외 발생 등)를 할 수 있게 도와준다.
- Null값을 Wrapper로 한번 감싸서 사용하기 때문에 코드의 안정성을 높이는데 도움을 준다.
📘Optional의 객체 생성 방법
1️⃣ Optional 생성 방법 : Optional.of(value)
- 값이 null이 아님이 보장될 때 사용된다.
- 아래 코드는 hello라는 값을 가진 Optional 객체가 생성된다.
Optional<String> optional = Optional.of("Hello");
- null을 전달하면 NullPointerException이 발생.
Optional<String> optionalNullTest= Optional.of(null);
2️⃣ 값이 없는 Optional 생성 방법 : Optional.empty()
- 값이 없는 Optional 객체를 직접 생성할 수 있다.
- Optional.of(null)은 NPE가 뜨지만, Optional.empty()는 값이 없는 객체를 만들었기 때문에 get() 사용시 NoSuchElementException 에러가 뜬다.
- 내부적으로 null을 담고 있는 것이 아니라, 단순히 비어 있는 상태(empty state = 객체는 존재하지만, 값이 없음)의 Optional 객체를 생성.
Optional<String> emptyOptional = Optional.empty();
📘 자주 사용되는 Optional 메서드
1️⃣ isPresent() / isEmpty()
- 값이 존재하는지 확인해주는 메서드이다.
Optional<String> optional = Optional.ofNullable("test");
if (optional.isPresent()) {
System.out.println(optional.isPresent()); //true 출력
System.out.println(optional.get()); // "test" 출력
}
if (optional.isEmpty()) {
System.out.println(optional.isEmpty()); //false 출력
System.out.println("값이 없습니다. ");
}
2️⃣ get()
- Optional 객체에서 값을 반환해주는 메서드이다.
Optional<String> optional = Optional.of("test");
System.out.println(optional.get()); // "test"
- optional2는 NoSuchElementException 발생
- optional2는 NullPointerException 발생
++ 천천히 추가 예정
'JAVA' 카테고리의 다른 글
[ java ] Static 메서드에서 Field 접근 (0) | 2025.03.31 |
---|---|
[ java ] 인터페이스 (다중구현, static, default) (0) | 2025.03.31 |
[ java ] 멀티 스레드 사용법 (1) | 2024.12.26 |
[ java ] 생성자, 생성자 오버로딩 (0) | 2024.12.10 |
[ java ] 추상클래스 (0) | 2024.12.10 |