Enums on steroids - let's look at sealed classes ! by Marcin Chrost

Explore Java's sealed classes with pattern matching and switch expressions. Learn about type-safe hierarchies, records, and improved syntax for handling variants.

Key takeaways
  • Sealed classes and interfaces allow restricting which classes can inherit/implement them, providing better type safety than enums
  • Pattern matching with switch expressions in Java provides cleaner syntax compared to traditional if-else chains when handling different types
  • Records in Java offer concise immutable data classes with built-in constructors and accessors, similar to Lombok’s @Value
  • Guarded patterns allow additional conditions in switch cases while maintaining exhaustiveness checking
  • Arrow labels in switch expressions improve readability and reduce boilerplate compared to traditional switch statements
  • When using records in switch expressions, you can deconstruct record members directly without explicit getter calls
  • Preview features in Java go through testing periods before becoming permanent, requiring explicit opt-in during preview phase
  • Sealed hierarchies provide compile-time verification that all possible subtypes are handled
  • Switch expressions with sealed types eliminate need for default cases since compiler knows all possible variants
  • Local variables in switch branches have their own lexical scope, preventing accidental variable leakage