record RecordClass(int x) {} public class FallThrough { void testFallThough(Integer i, Object o) { switch (i) { case 1, Integer x -> { } } switch (i) { case 1, Integer x -> { } } switch (i) { case null, Integer x -> { } } switch (i) { case 1, Integer x when x > 0 -> { } } switch (o) { case String s, Integer x when x > 0 -> { } } switch (o) { case String s, RecordClass(int x) r when x > 0 -> { } } switch (o) { case String s, RecordClass(int x) -> { } } switch (o) { case null, RecordClass(int x) -> {} case default -> {} } switch (o) { case RecordClass(int x) s, null -> {} case default -> {} } switch (i) { case 1: case Integer x: System.out.println(); break; } switch (i) { case 1: case Integer x when x > 0: System.out.println(); break; } switch (o) { case String s: case Integer x when x > 0: System.out.println(); break; } switch (o) { case String s: break; case Integer x when x > 0: System.out.println(); break; default: throw new IllegalStateException("Unexpected value: " + o); } } }