Luigit
repositories / dotfiles

dotfiles

bugabingas dorkfiles

owned by admin

pi/agent/skills/optional/java/java-pattern-switch/SKILL.md

Raw
Rendered preview

name: java-pattern-switch description: "Use when Java 21+ switch uses type patterns, null, guards, sealed exhaustiveness, or pattern dominance." license: CC-BY-4.0-summary compatibility: "JDK 21+" metadata: sources: - "https://openjdk.org/jeps/441" - "https://openjdk.org/jeps/440"

Pattern Matching for switch

Use for Pattern Matching for switch work from JEP 441 when targeting JDK 21+.

When active

  • Refactor instanceof/cast chains into pattern switches.
  • Handle case null explicitly when needed.
  • Use sealed hierarchies and record patterns for exhaustive switches.

Pitfalls

  • Pattern labels are tested in source order; dominated labels are compile-time errors.
  • default does not match null.
  • Put narrow cases before broad cases such as Object.

Examples

Read examples/jep-441.md for JEP-derived snippets.

References

---
name: java-pattern-switch
description: "Use when Java 21+ `switch` uses type patterns, `null`, guards, sealed exhaustiveness, or pattern dominance."
license: CC-BY-4.0-summary
compatibility: "JDK 21+"
metadata:
  sources:
    - "https://openjdk.org/jeps/441"
    - "https://openjdk.org/jeps/440"
---

# Pattern Matching for switch

Use for **Pattern Matching for switch** work from [JEP 441](https://openjdk.org/jeps/441) when targeting JDK 21+.

## When active

- Refactor `instanceof`/cast chains into pattern switches.
- Handle `case null` explicitly when needed.
- Use sealed hierarchies and record patterns for exhaustive switches.

## Pitfalls

- Pattern labels are tested in source order; dominated labels are compile-time errors.
- `default` does not match `null`.
- Put narrow cases before broad cases such as `Object`.

## Examples

Read `examples/jep-441.md` for JEP-derived snippets.

## References

- https://openjdk.org/jeps/441
- https://openjdk.org/jeps/440