Chapter 1: New Language Features

Switch to Switch Expressions

class NameBadge {

  enum Rank {
    PILOT,
    COMMANDER,
    RESEARCHER
  }

  String name;
  Rank rank;

  public String toString() {
    String result;
    switch (rank) {
      case COMMANDER:
        result = "***";
        break;
      case PILOT:
        result = "**";
        break;
      case RESEARCHER:
      default:
        result = "*";
    }
    return name + " " + result;
  }
}
  • old switch statement
  • default case necessary despite every enum type covered
class NameBadge {

  enum Rank {
    PILOT,
    COMMANDER,
    RESEARCHER
  }

  String name;
  Rank rank;

  public String toString() {
    return name + " " + switch (rank) {
      case COMMANDER -> "***";
      case PILOT -> "**";
      case RESEARCHER -> "*";
    };
  }
}
  • use switch expression
  • one single return statement
  • auto-break
  • default case no longer necessary as compiler knows that every enum type is covered