Skip to content
Java

Sealed Classes

Java 17+ sealed classes.

By EZ4Code Team
sealedinheritance

Code

// Sealed class
public sealed abstract class Shape
    permits Circle, Square, Triangle {}

public final class Circle extends Shape {
    private final double radius;
    public Circle(double r) { radius = r; }
}

public final class Square extends Shape {
    private final double side;
    public Square(double s) { side = s; }
}

public final class Triangle extends Shape {
    private final double base, height;
    public Triangle(double b, double h) { base = b; height = h; }
}

// Exhaustive matching
double area(Shape shape) {
    return switch (shape) {
        case Circle c -> Math.PI * c.radius * c.radius;
        case Square s -> s.side * s.side;
        case Triangle t -> 0.5 * t.base * t.height;
    };
}

Explanation

Sealed classes restrict which classes can inherit from them; the compiler can perform exhaustiveness checks.

More Java Snippets