Ταίριαγμα προτύπων σε εγγραφές

Σε εγγραφές μπορούμε να ταιριάξουμε και τα ορίσματά τους.

class PaternMatch {

    record Point2D(double x, double y) {}
    record Point3D(double x, double y, double z) {}

    /** Output the magnitude of the specified object */
    private static void printMagnitude(Object o) {
        System.out.println("Magnitude of " + o + " is " +
            switch (o) {
                case Point2D(double x, double y) -> Math.sqrt(x * x + y * y);
                case Point3D(double x, double y, double z) ->
                    Math.sqrt(x * x + y * y + z * z);
                default -> throw new IllegalArgumentException("Unexpected type: "
                        + o.getClass().getName());
            }
        );
    }

    public static void main(String[] args) {
        printMagnitude(new Point2D(3, 4)); // Pythagorean triple
        printMagnitude(new Point3D(1, 4, 8)); // Pythagorean quadruple
    }
}