static void printPatternSwitch(Object o) {
switch (o) {
case null:
System.out.println("*null*");
break;
case Integer i:
System.out.printf("int %d%n", i);
break;
case Long l:
System.out.printf("long %d%n", l);
break;
case Double d:
System.out.printf("double %f%n", d);
break;
case String s:
System.out.printf("String %s%n", s);
break;
default:
System.out.println(o);
break;
};
}
static String formatterPatternSwitch(Object o) {
return switch (o) {
case null -> "*null*";
case Integer i -> String.format("int %d", i);
case Long l -> String.format("long %d", l);
case Double d -> String.format("double %f", d);
case String s -> String.format("String %s", s);
default -> o.toString();
};
}
switch (o) {
case Intger i:
// fall through
case String s:
System.out.println(s);
break;
default:
break;
}
switch(n) {
case default -> "default";
~
}
switch(n) {
case 1, default -> "one";
~
}
switch(n) {
case default, 2 -> "two";
~
}
switch(n) {
case 1, default, 3 -> "three";
~
}
static void printPatternSwitch(Object o) {
switch (o) {
case null:
System.out.println("*null*");
break;
~
}
}
static String formatterPatternSwitch(Object o) {
return switch (o) {
case null -> "*null*";
~
};
}
switch (o) {
case null:
case String s:
System.out.println("s=" + s);
break;
~
}
switch (o) {
case null, String s:
System.out.println("s=" + s);
break;
~
}
switch (o) {
case null:
default:
System.out.println("default");
break;
}
switch (o) {
case null, default:
System.out.println("default");
break;
}
switch (o) {
case default, null:
System.out.println("default");
break;
}
//Java17~18「&&」、Java19「when」
static void test(Object o) {
switch (o) {
// case String s && s.length() == 1: // Java17~18
case String s when s.length() == 1: // Java19
System.out.println("1--" + s);
break;
case String s:
System.out.println("n--" + s);
break;
default:
System.out.println("default");
break;
}
}
switch (o) {
// case (String s && s.length() == 1) -> 1; // Java17~18
case (String s when s.length() == 1) -> 1; // Java19
~
}
sealed interface S permits A, B, C {}
final class A implements S {}
final class B implements S {}
record C(int i) implements S {} // Implicitly final
static int testSealedCoverage(S s) {
return switch (s) {
case A a -> 1;
case B b -> 2;
case C c -> 3;
};
}
//Java19
record Record1(int n) {}
record Record2(int n) {}
static void recordTest(Object o) {
switch (o) {
case Record1(int i):
System.out.println("rec1=" + i);
break;
case Record2(var i):
System.out.println("rec2=" + i);
break;
default:
System.out.println("default");
break;
}
}
switch模式匹配Java17~20
最新推荐文章于 2024-06-28 15:12:05 发布