class SwitchTests // JDK 21+. { static void echo(Object o) { System.out.println(o); } static { interface Yieldable { T yield(); default Yieldable default_() { return this; } default Yieldable when() { return this; } } // There are 80 bytes (\@80 y = ((Yieldable) () -> 0):: yield; ((Yieldable) () -> 0).when().default_().yield(); enum Letters { OTHER, ALPHA, BETA } Letters when = Letters.OTHER; switch (when) { case ALPHA: { echo(Letters.ALPHA); break; } case BETA: { echo(Letters.BETA); break; } default: { echo(Letters.OTHER); } } echo(switch (when) { case ALPHA -> Letters.ALPHA; case BETA -> Letters.BETA; default -> { yield(Letters.OTHER); } }); String yield = null; switch (yield) { case "A": case "B": { echo("A or B"); break; } case ":": { echo("Colon"); break; } case String str when !str.equals(""): { echo(""); break; } case null: default: { echo("Other"); } } echo(switch (yield) { case "A", "B" -> { yield("A or B"); } case "->" -> "Arrow"; case String str when !str.equals("") -> ""; case null, default -> "Other"; }); Object o = new Object(); switch (o) { case null: { echo("null"); break; } case Letters[] ll: { echo("SwitchTests$1Letters[]"); break; } default: { echo("java.lang.Object"); break; } } echo(switch (o) { case null -> "null"; case Letters[] ll -> "SwitchTests$1Letters[]"; default -> "java.lang.Object"; }); char ch = 'c'; switch (ch) { case 'a': { echo('a'); break; } case 'b': { echo('b'); break; } default: { echo('\u0000'); break; } } echo(switch (ch) { case 'a' -> 'a'; case 'b' -> 'b'; default -> '\u0000'; }); byte b = (byte) 2; switch (b) { case ((byte) 0): { echo((byte) 0); break; } case ((byte) 1): { echo((byte) 1); break; } default: { echo((byte) -1); break; } } echo(switch (b) { case ((byte) 0) -> (byte) 0; case ((byte) 1) -> (byte) 1; default -> (byte) -1; }); short sh = (short) 2; switch (sh) { case ((short) 0): { echo((short) 0); break; } case ((short) 1): { echo((short) 1); break; } default: { echo((short) -1); break; } } echo(switch (sh) { case ((short) 0) -> (short) 0; case ((short) 1) -> (short) 1; default -> (short) -1; }); int i = 2; switch (i) { case 0b0__00___000: { echo(0); break; } case 0x000___00__1: { echo(1); break; } default: { echo(-1); break; } } echo(switch (i) { case 0_0_0_0_0 -> 0; case 1 -> 1; default -> -1; }); } }