switch의 패턴 매칭
if-else instanceof 체인을 깔끔한 switch 타입 패턴으로 대체합니다.
코드 비교
✕ Java 8
String format(Object obj) {
if (obj instanceof Integer i)
return "int: " + i;
else if (obj instanceof Double d)
return "double: " + d;
else if (obj instanceof String s)
return "str: " + s;
return "unknown";
}
✓ Java 21+
String format(Object obj) {
return switch (obj) {
case Integer i -> "int: " + i;
case Double d -> "double: " + d;
case String s -> "str: " + s;
default -> "unknown";
};
}
이 코드에 문제가 있나요? 알려주세요.
모던 방식이 더 나은 이유
구조적 분배
Switch는 분기 구조를 명시적이고 스캔 가능하게 만듭니다.
표현식 형태
값을 직접 반환합니다 — 가변 변수가 필요 없습니다.
완전성
컴파일러가 모든 타입이 처리되었는지 확인합니다.
이전 방식
if-else 체인
모던 방식
타입 패턴
JDK 버전
21
난이도
중급
JDK 지원
switch의 패턴 매칭
사용 가능
JDK 21 LTS (2023년 9월) 이후 널리 사용 가능
동작 원리
switch의 패턴 매칭은 타입 테스트, 캐스트, 바인딩을 하나의 간결한 케이스 레이블에 결합하여 타입에 직접 매칭할 수 있게 합니다. 컴파일러가 완전성을 검사합니다.
관련 문서