사실 나온 지는 꽤 되었지만, 바보처럼 실수한 적도 있고 해서 정리해본다.
Java 14부터 사용할 수 있게 되었고, 중괄호 없이 바로 사용할 수 있다는 게 장점이다.
중괄호를 사용할 경우에는 break 문을 반드시 써줘야 한다.
이 switch 문은 기본적으로 다음과 같은 문법을 따른다.
화살표 다음의 문장을 실행하거나 값을 반환하되, 다른 화살표의 내용은 실행하지 않는다는 것이 특징이다.
case label_1, label_2, ..., label_n -> expression;|throw-statement;|block
public class NewSwitchExample {
public static String numToString(int number) {
return switch (number) {
case 1 -> "One";
case 2 -> "Two";
case 3 -> "Three";
default -> "Other";
};
}
}
다음 처럼 여러 조건을 묶어서 연산하는 것도 가능해서, 가독성에 매우 큰 도움이 된다.
int dayNumber = switch (day) {
case "Monday", "Wednesday", "Friday" -> 1;
case "Tuesday", "Thursday", "Saturday" -> 2;
default -> 0;
};
위의 상황과 다르게 중괄호를 사용한다면, 명식적으로 break 혹은 yield 를 작성해야 한다.
그렇지 않으면 의도치 않게 동작할 수 있다.
yield 는 Java SE13에서 등장한 것으로, 이를 사용하는 경우 switch 구문의 결과를 반환할 수 있다.
switch 표현식에서 return 문을 사용할 수 없기 때문에 등장한 대용품이라고 생각하면 된다.
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> {
System.out.println(6);
yield 6;
}
case TUESDAY -> {
System.out.println(7);
yield 7;
}
case THURSDAY, SATURDAY -> {
System.out.println(8);
yield 8;
}
case WEDNESDAY -> {
System.out.println(9);
yield 9;
}
default -> {
throw new IllegalStateException("Invalid day: " + day);
}
};
자세한 해설을 보려면 공식문서를 참고해보자!
https://docs.oracle.com/en/java/javase/13/language/switch-expressions.html
'개발 > TIL' 카테고리의 다른 글
[Sql 튜닝] SQL 처리과정과 IO (1) | 2025.03.03 |
---|---|
Validation과 Exception Handling (2) | 2025.03.01 |
spring webflux 에 대한 개요 (0) | 2025.02.27 |
kubernetes에서 yml 로 pod 관리하기 (0) | 2025.02.26 |
java record 알차게 사용하기 (0) | 2025.02.25 |