java / intermediate
Snippet
Musterabgleich im Switch für den Kontrollfluss in Spring Services
Modernes Java-Switch-Pattern-Matching und geschützte Muster (when-Klauseln) ermöglichen einen prägnanten, erschöpfenden Kontrollfluss über versiegelte Typhierarchien in Spring-Services ohne Typumwandlungen oder verschachtelte if-Anweisungen.
snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public sealed interface OrderEvent permits OrderCreated, OrderPaid, OrderCancelled {}public record OrderCreated(String orderId) implements OrderEvent {}public record OrderPaid(String orderId, double amount) implements OrderEvent {}public record OrderCancelled(String orderId, String reason) implements OrderEvent {}@Servicepublic class OrderWorkflowService {public String handleEvent(OrderEvent event) {return switch (event) {case OrderCreated c -> "Initializing order: " + c.orderId();case OrderPaid p when p.amount() > 10_000.0 -> "High-value payment received for: " + p.orderId();case OrderPaid p -> "Standard payment processed for: " + p.orderId();case OrderCancelled c -> "Order aborted due to: " + c.reason();};}}
spring
Erklärung
1
public sealed interface OrderEvent permits OrderCreated, OrderPaid, OrderCancelled {}
Beschränkt Domänenzustände auf eine geschlossene Menge zulässiger Records.
2
return switch (event) {
Wertet den Kontrollfluss erschöpfend über alle erlaubten Ereignistypen ohne default-Zweig aus.
3
case OrderPaid p when p.amount() > 10_000.0 ->
Wendet eine Bedingung (Pattern Guard) direkt innerhalb der Switch-Kontrollstruktur an.