-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Expand file tree
/
Copy pathTest.java
More file actions
139 lines (121 loc) · 3.22 KB
/
Test.java
File metadata and controls
139 lines (121 loc) · 3.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
public class Test {
public static void test(Object thing) {
switch (thing) {
case String s -> System.out.println(s);
case Integer i -> System.out.println("An integer: " + i);
default -> { }
}
switch (thing) {
case String s:
System.out.println(s);
break;
case Integer i:
System.out.println("An integer:" + i);
break;
default:
break;
}
var thingAsString = switch(thing) {
case String s -> s;
case Integer i -> "An integer: " + i;
default -> "Something else";
};
var thingAsString2 = switch(thing) {
case String s:
yield s;
case Integer i:
yield "An integer: " + i;
default:
yield "Something else";
};
switch(thing) {
case String s when s.length() == 3:
System.out.println("Length 3");
break;
case String s when s.length() == 5:
System.out.println("Length 5");
break;
default:
System.out.println("Anything else");
break;
}
switch(thing) {
case String s when s.length() == 3 -> System.out.println("Length 3");
case String s when s.length() == 5 -> System.out.println("Length 5");
default -> { }
}
switch((String)thing) {
case "Const1":
System.out.println("It's Const1!");
case "Const2":
System.out.println("It's Const1 or Const2!");
break;
case String s when s.length() <= 6:
System.out.println("It's <= 6 chars long, and neither Const1 nor Const2");
case "Const3":
System.out.println("It's (<= 6 chars long, and neither Const1 nor Const2), or Const3");
break;
case "Const30":
System.out.println("It's Const30");
break;
case null, default:
System.out.println("It's null, or something else");
}
switch(thing) {
case String s:
System.out.println(s);
break;
case null:
System.out.println("It's null");
break;
case Integer i:
System.out.println("An integer:" + i);
break;
default:
break;
}
switch(thing) {
case A(B(int x, String y), float z):
break;
default:
break;
}
switch(thing) {
case A(B(var x, var y), var z):
break;
default:
break;
}
switch(thing) {
case B(_, _):
case Integer _, String _, A(_, _) when thing.toString().equals("abc"):
case Float _:
break;
default:
break;
}
var result = switch(thing) {
case B(_, _):
case Integer _, String _, A(_, _) when thing.toString().equals("abc"):
case Float _:
yield 1;
default:
yield 2;
};
switch ((String)thing) {
case "a":
case String _ when ((String)thing).length() == 5:
case "b":
break;
default:
break;
}
// Test the case where a case falls out of a switch block without a break:
switch(thing) {
case String _:
default:
}
}
}
record A(B b, float field3) { }
record B(int field1, String field2) { }