name: modernize-java description: Update Java code to modern language features — records, switch expressions, pattern matching, virtual threads, sealed classes, text blocks, and current collection idioms. Triggers on Java source files. paths: - "**/*.java" effort: medium user-invocable: true
Modernize Java Code
Update the target code to use modern Java features:
- Records instead of mutable POJOs where the type is a value carrier
- Switch expressions with arrow syntax and exhaustiveness checking
- Pattern matching for
instanceofandswitch - Local variable type inference (
var) where it helps readability - Virtual threads (Java 21+) for I/O-bound operations —
Executors.newVirtualThreadPerTaskExecutor() - Sealed classes when the type hierarchy is closed
- Text blocks for multiline strings
- Sequenced collections (Java 21+) where ordered access matters
- Collection factory methods (
List.of,Map.of,Map.entry)
Constraints
- Don't change behavior — preserve the public API and observable semantics.
- Don't apply
varwhere the inferred type would harm readability (e.g., factory results that could be any of several types). - If the project's target Java version is below 21, skip the 21+ features and note it in your summary.
- Run the test suite after non-trivial changes; if tests don't exist, surface that as a follow-up rather than as a blocker.