benf.org : other : cfr : switch expressions |
Since java 12, kotlin style "switch expressions" are now possible in java! As of java 12, javac requires --enable-preview, but they're slated to be fully released in java 13.
If your code was compiled with javac 13, CFR will automatically resugar them, otherwise you will need to use --switchexpression true (I don't want to assume an experimental feature!)
Note that switch expressions currently resugar with break VALUE in complex cases. This may change to break-with VALUE in the future.
public static void foo(String x) { System.out.println(switch (x) { case "Jennifer" -> throw new IllegalStateException(); case "Alison","Phillipa" -> { System.out.println("JIM"); break "JIM"; } case "Sue","Deborah","Annabel" -> "FRED"; default -> { if (x.length() > 4) break "ALICE"; System.out.println("BOB!"); break "BOB"; } }); }
public static void foo(String x) { String string; switch (x) { case "Jennifer": { throw new IllegalStateException(); } case "Alison": case "Phillipa": { System.out.println("JIM"); string = "JIM"; break; } case "Sue": case "Deborah": case "Annabel": { string = "FRED"; break; } default: { if (x.length() > 4) { string = "ALICE"; break; } System.out.println("BOB!"); string = "BOB"; } } System.out.println(string); }
Note that this chains switch-on-string and switch expressions, which is nice!
public static void foo(String x) { String string = switch (x) { "Jennifer" -> throw new java.lang.IllegalStateException(); "Alison", "Phillipa" -> { System.out.println("JIM"); break "JIM"; } "Sue", "Deborah", "Annabel" -> "FRED"; default -> { if (x.length() > 4) { break "ALICE"; } System.out.println("BOB!"); break "BOB"; } }; System.out.println(string); }
Yay!
Last updated 03/2019 |