class Test { void test(Number n) { class MyNumber extends Number { @Override public int intValue() { return 0; } @Override public long longValue() { return 0; } @Override public float floatValue() { return 0; } @Override public double doubleValue() { return 0; } } int result; switch (n) { case MyNumber: break; case Integer break; case default: break; } result = switch (n) { case MyNumber: yield 1; case Float ignored: yield 2; case default: yield 3; }; result = switch (n) { case MyNumber -> 1; case Float ignored -> 2; case default -> 3; }; } }