Language 중급

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
난이도
중급
when 가드가 있는 패턴
사용 가능

JDK 21 LTS (2023년 9월) 이후 널리 사용 가능

가드된 패턴은 추가 boolean 조건으로 타입 매칭을 세밀화할 수 있습니다. 이를 통해 케이스 내부에 if 문을 중첩하지 않고 모든 분기 로직을 switch 안에 유지합니다.

공유 𝕏 🦋 in