when 가드가 있는 패턴
when 가드를 사용하여 패턴 케이스에 조건을 추가합니다.
코드 비교
✕ Java 8
if (shape instanceof Circle c) {
if (c.radius() > 10) {
return "large circle";
} else {
return "small circle";
}
} else {
return "not a circle";
}
✓ Java 21+
return switch (shape) {
case Circle c
when c.radius() > 10
-> "large circle";
case Circle c
-> "small circle";
default -> "not a circle";
};
이 코드에 문제가 있나요? 알려주세요.
모던 방식이 더 나은 이유
정밀한 매칭
단일 케이스 레이블에 타입 + 조건을 결합합니다.
평탄한 구조
switch 케이스 내부에 중첩된 if/else가 없습니다.
읽기 쉬운 의도
when 절이 자연어처럼 읽힙니다.
이전 방식
중첩 if
모던 방식
when 절
JDK 버전
21
난이도
중급
JDK 지원
when 가드가 있는 패턴
사용 가능
JDK 21 LTS (2023년 9월) 이후 널리 사용 가능
동작 원리
가드된 패턴은 추가 boolean 조건으로 타입 매칭을 세밀화할 수 있습니다. 이를 통해 케이스 내부에 if 문을 중첩하지 않고 모든 분기 로직을 switch 안에 유지합니다.
관련 문서