몇 달 전에 Mkyong님의 블로그를 보고 Java Switch 문에 변화가 생겼다는 걸(오래된 일이지만) 뒤늦게 알게 되었다. C, C++ 개발을 할 때 if 문을 더 선호하던 편이라 Java 로 개발언어를 바꾼뒤에도 if 문 체인을 사용하거나, 성능이 중요한 경우에는 Map을 사용해 조건 처리를 하는 경우가 많았다. 몇 일전에 Map 으로만 처리하던 코드를 if 문으로 구현하려고 하니 뭔가 주렁주렁 체인이 생기는 것 같아 새로운 Switch 문을 사용해 보았다. 코드가 훨씬 깔끔해진 느낌이다.
RxMessage message = switch (id) {
case "L" -> new ToggleStatus(id, content);
case "M" -> new Alarm(id, content);
case "P", "K" -> new Parameters(id, content);
default -> assert false;
};
RxMessage message;
if (id.equals("L")) {
message = new ToggleStatus(id, content);
} else if (id.equals("M")) {
message = new Alarm(id, content);
} else if (id.equals("P") || id.equals("K")) {
message = new Parameters(id, content);
} else {
assert false;
}
참고