switch 표현식
Java 12 에서 처음 소개 되었고,
Java 14 에서 정식 릴리즈 되었다고 한다.
기존 switch 구문의 문제점
- break를 깜빡하면 fall-through 오류 발생하한다.
- 값을 직접 반환할 수 없다.
- 코드가 장황해지기 쉽다.
int result;
switch (op) {
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
default:
result = 0;
}
switch 표현식의 특징 (Java 14+)
- switch 자체가 값을 반환하므로 변수에 바로 대입 가능하다.
- 콜론(:) 대신 화살표(->) 사용
- yield 키워드 사용
- 하나의 문장(또는 표현식)이면 yield 키워드를 생략할 수 있다.
- break 생략
- fall-through 없음 → 버그 방지
int result = switch (op) {
case '+' -> a + b;
case '-' -> a - b;
default -> 0;
};
// 복잡한 연산 시
int result = switch (op) {
case '+' -> {
System.out.println("덧셈 수행");
yield a + b;
}
case '-' -> {
yield a - b;
}
default -> throw new IllegalArgumentException("잘못된 연산자");
};
switch 표현식 주의할 점
모든 case가 다 처리되지 않으면 컴파일 에러가 발생된다.
int result = switch (op) {
case '+' -> a + b;
case '-' -> a - b;
// ❌ 모든 문자 입력에 대해 결과가 정의되지 않음
};
---
// 해결 방안
int result = switch (op) {
case '+' -> a + b;
case '-' -> a - b;
default -> 0; // 또는 예외 던지기
};
예외: 열거형(enum) 사용 시엔 예외 가능
- enum의 모든 상수를 처리하면 default 생략 가능
enum Operation { PLUS, MINUS }
Operation op = Operation.PLUS;
int result = switch (op) {
case PLUS -> a + b;
case MINUS -> a - b;
// 이 경우, 모든 enum 값이 다 처리되었으므로 default 없어도 OK!
};
'Java > 문법' 카테고리의 다른 글
가변 인자 (...) (0) | 2025.04.29 |
---|---|
String.split() 문자열 자르기, 나누기 (0) | 2025.04.22 |
어노테이션(Annotation) (0) | 2025.04.21 |
Enum 열거형 타입 (0) | 2025.04.21 |
유틸리티 클래스 (Utility Class) (1) | 2025.04.18 |