News and views from members of the Java team at Oracle
An exhaustive switch on a sealed type covers the permitted subtypes the compiler knows about; it does not cover future additions, which can cause MatchException at run time. API authors should document the expected evolution of sealed types so that client code can choose how to handle future additions. It is almost never necessary to use default when switching over a sealed type—and often not the best option.
More at https://openjdk.org/projects/amber/guides/exhaustiveness-guide.