Comment

Comment by mabbo

I've got a few very specific use cases where I'm going to be so glad to have sealed classes[0]. Oddly not mentioned in the release notes, but they're like a final class, except you can say "These classes are allowed to be subclasses of this class".

Why is that useful? Because now you can do a switch statement that matches on type:

    int getCenter(Shape shape) {
        return switch (shape) {
            case Circle c    -> ... c.center() ...
            case Rectangle r -> ... r.length() ...
            case Square s    -> ... s.side() ...
        };
    }
As long as Shape is sealed, the compiler can be confident that these are all the possible subclasses of Shape.

[0]http://openjdk.java.net/jeps/360

parent mabbo 6 years ago

Discussion

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton