switch模式匹配Java17~20

	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;
		}
	}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值