BackEnd/Java
Java 14. Switch Expression
hanseom
2024. 12. 7. 08:30
반응형
statement vs expression
- statement: 어떠한 프로그래밍 문장으로 조건문, 반복문 등이 해당됩니다.
- expression: 프로그래밍 문장이긴 한데 결과값이 하나의 값으로 정해지는 문장입니다. 3항 연산자 등이 해당됩니다.
// expression
String grade = score >= 50 ? "P" : "F";
Switch Expression
기존에 statement였던 switch 문을 expression으로 사용할 수 있게 강화된 기능입니다. Java 12 preview, Java 14 정식 기능으로 출시되었습니다.
- 기존의 switch statement
private String calculateTestGrade(int score) {
String grade = "";
switch (score) {
case 5: // colon case label
grade = "A";
break;
case 4:
case 3:
grade = "B";
break;
case 2:
case 1:
grade = "C";
break;
default:
grade = "F";
}
return grade;
}
- 개선된 switch expression
private String calculateTestGrade(int score) {
return switch (score) {
case 5:
yield "A"; // yield를 통해 반환값을 지정합니다.
case 4, 3: // 여러 라벨을 한 번에 처리하기 위해 ","을 사용합니다.
yield "B";
case 2, 1:
yield "C";
default:
yield "F";
};
}
- arrow case label
private String calculateTestGrade(int score) {
return switch (score) {
case 5 -> "A"; // yield 생략 가능. 단, 중괄호 사용 시 yield를 반드시 사용해야 합니다.
case 4, 3 -> "B";
case 2, 1 -> "C";
default -> "F";
};
}
switch expression 특징
- 반드시 최종 결과가 하나의 값으로 만들어져야 합니다. 예외를 던지는 것은 가능합니다.
private String calculateTestGrade(int score) {
return switch (score) {
case 5 -> {
System.out.println("만점입니다!");
yield "A";
}
case 4, 3 -> throw new IllegalArgumentException();
case 2, 1 -> "C";
default -> "F";
};
}
- Enum과 함께 사용하면 시너지 효과를 낼 수 있습니다. Enum 클래스의 경우, 컴파일 시점에 어떤 타입이 있는지 알 수 있기 때문에 다음과 같이 default를 사용하지 않아도 됩니다.
enum Color {RED, YELLOW, GREEN}
public String getSignal(Color color) {
return switch(color) {
case RED -> "멈추세요.";
case YELLOW -> "곧 빨간색으로 바뀝니다.";
case GREEN -> "지나가세요.";
};
}
반응형