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


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.