✅ Optional이 뭐야?
Optional<T>
는 "값이 있을 수도, 없을 수도 있는 객체"예요.즉,
null
을 그냥 쓰지 말고 Optional로 감싸서 안전하게 다루자는 거예요.🛠️ Optional 만드는 법
Optional.of("값") // 절대 null 넣으면 안 됨 ❌
Optional.ofNullable(변수) // null일 수도 있을 때
Optional.empty() // 비어있는 Optional
🔓 Optional에서 값 꺼내는 법
opt.get() // ❌ 값 없으면 터짐 (지양)
opt.orElse("기본값") // 값 없으면 기본값 리턴
opt.orElseGet(() -> ...) // 값 없으면 람다 실행
opt.orElseThrow() // 값 없으면 예외 던짐
🔍 값 있는지 확인하기
opt.isPresent() // 값 있으면 true
opt.ifPresent(val -> ...) // 값 있으면 처리
⚠️ 주의할 점
Optional.of(null); // ❌ NullPointerException 터짐!
- null 가능성 있으면
ofNullable()
쓰세요.
get()
직접 쓰는 건 피하고,orElse
,ifPresent
같은 안전한 방식 쓰세요.
💡 한 줄 요약
Optional = "null 안전하게 쓰자"는 문법 도구!
테스트 코드
@Test
public void t1() {
String name = "metacoding";
Optional<String> opt = Optional.ofNullable(name);
if (opt.isPresent()) {
System.out.println(opt.get());
} else {
System.out.println("선물 박스에 값이 없음.");
}
}
@Test
public void t2() {
String name = null;
Optional<String> opt = Optional.ofNullable(name);
String result = opt.orElseThrow(() -> new RuntimeException("값이 없어요."));
System.out.println(result);
}
@Test
public void t3() {
String name = null;
Optional<String> opt = Optional.ofNullable(name);
String result = opt.orElseGet(() -> "metacoding");
System.out.println(result);
}
t1 실행 결과

t2 실행 결과

t3 실행 결과

Share article