Παράδειγμα: Αλγεβρικοί τύποι δεδομένων


sealed abstract class Shape permits Circle, Rectangle {}

final class Circle extends Shape {}

final class Rectangle extends Shape {}

static String describe(Shape s) {
    return switch (s) {
        case Circle c ->
            "Circle with radius " + c.getRadius();

        case Rectangle r ->
            "Rectangle " + r.getHeight() + " x " + r.getWidth();
    };
}

Το παραπάνω πρόγραμμα είναι σχεδιασμένο ώστε εγγυημένα να καλύπτει όλες τις υποκλάσεις της Shape.