Πολυμορφισμός με ταίριαγμα προτύπων

Με εντολές switch μπορούμε να γράψουμε κώδικα για συγκεκριμένους τύπους με βάση το ταίριασμα προτύπων (pattern matching).

class PaternMatch {

    class RetailCustomer {}
    class BusinessCustomer {}

    /** Return the document a given object shall receive */
    private static String documentName(Object o) {
        return switch (o) {
            case RetailCustomer rc -> "receipt";
            case BusinessCustomer bc -> "invoice";
            default -> "unknown document";
        };
    }

    public static void main(String[] args) {
        var retailCustomer = new RetailCustomer();
        var businessCustomer = new BusinessCustomer();
        System.out.println("Retail customer gets "
                + documentName( retailCustomer));
        System.out.println("Business customer gets "
                + documentName(businessCustomer));
    }
}