public class NotExhaustive { sealed interface Shape permits Circle, Square, Rect {} record Circle(double r) implements Shape {} record Square(double side) implements Shape {} record Rect(double w, double h) implements Shape {} static double area(Shape s) { return switch (s) { case Circle(double r) -> Math.PI * r * r; case Square(double side) -> side * side; // Rect is missing }; } public static void main(String[] args) { System.out.println(area(new Circle(1))); } }