JAVA|新しいスイッチ


数ヶ月前にMkyongのブログを見て、Java Switchゲートが変わったことに気づきました(ずいぶん前のことですが).C、C++はif文が好きなので、開発言語をJavaに変更した後もif文チェーンをよく使用したり、性能が重要な場合にmapを使用して条件処理を行ったりします.数日前、if文でmap処理のみを使用するコードを実装しようとしましたが、煩わしいチェーンが現れたようなので、新しいスイッチ文を試してみました.和弦がきれいになったような気がします.
Boilerplateコードは、
  • ifゲートチェーンに比べて少ない.
  • そのためコードが短くなります.
  • の意味はもっと直感的に見えます.
  • は、同じ行動の複数の条件を同時に処理するのに便利である.
  • Switch - case

        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; 
        };

    If - else

        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; 
        }
    リファレンス
  • https://mkyong.com/java/java-12-switch-expressions/
  • https://nipafx.dev/java-switch/
  • https://gocoder.tistory.com/2183