Careeroza
Real World Example
Order Status Events (Swiggy / Zomato style)
Order tracking is a stream of events: placed, accepted by restaurant, picked up, delivered, cancelled. A sealed interface of records models the events; a pattern-matching switch turns them into the text shown in the app — and the compiler guarantees every event type is handled.
Example
import java.util.*;
public class Main {
static String toMessage(OrderEvent e) {
return switch (e) {
case Placed(var id, var amount) when amount >= 1000 -> "Order " + id + " placed. You earned free delivery!";
case Placed(var id, var amount) -> "Order " + id + " placed (Rs " + amount + ")";
case Accepted(var id, var restaurant, var mins) -> restaurant + " is preparing " + id + ", ready in " + mins + " min";
case PickedUp(var id, Rider(var name, var phone)) -> name + " picked up " + id + ". Call: " + phone;
case Delivered(var id) -> id + " delivered. Rate your meal!";
case Cancelled(var id, var reason) -> id + " cancelled: " + reason;
};
}
public static void main(String[] args) {
List<OrderEvent> timeline = List.of(
new Placed("SW-501", 1240),
new Accepted("SW-501", "Meghana Foods", 15),
new PickedUp("SW-501", new Rider("Imran", "98xxxxxx21")),
new Delivered("SW-501"),
new Placed("SW-502", 180),
new Cancelled("SW-502", "restaurant closed"));
timeline.forEach(e -> System.out.println(toMessage(e)));
}
}
record Rider(String name, String phone) {}
sealed interface OrderEvent permits Placed, Accepted, PickedUp, Delivered, Cancelled {}
record Placed(String orderId, int amount) implements OrderEvent {}
record Accepted(String orderId, String restaurant, int prepMinutes) implements OrderEvent {}
record PickedUp(String orderId, Rider rider) implements OrderEvent {}
record Delivered(String orderId) implements OrderEvent {}
record Cancelled(String orderId, String reason) implements OrderEvent {}Output
Order SW-501 placed. You earned free delivery! Meghana Foods is preparing SW-501, ready in 15 min Imran picked up SW-501. Call: 98xxxxxx21 SW-501 delivered. Rate your meal! Order SW-502 placed (Rs 180) SW-502 cancelled: restaurant closed