Sealed interface & records
public sealed interface Shape permits Circle, Rectangle {
double area();
}
public record Circle(double radius) implements Shape {
public double area() { return Math.PI * radius * radius; }
}
public record Rectangle(double w, double h) implements Shape {
public double area() { return w * h; }
}
switch on types
static String describe(Object o) {
return switch (o) {
case Circle c -> "circle";
case Rectangle r -> "rect";
case null -> "null";
default -> "other";
};
}
Loading comments...