Agent skill
142-java-functional-programming
Use when you need to apply functional programming principles in Java — including writing immutable objects and Records, pure functions, functional interfaces, lambda expressions, Stream API pipelines, Optional for null safety, function composition, higher-order functions, pattern matching for instanceof and switch, sealed classes/interfaces for controlled hierarchies, Stream Gatherers for custom operations, currying/partial application, effect boundary separation, and concurrent-safe functional patterns. Part of the skills-for-java project
Install this agent skill to your Project
npx add-skill https://github.com/jabrena/cursor-rules-java/tree/main/skills/142-java-functional-programming
Metadata
Additional technical details for this skill
- author
- Juan Antonio Breña Moral
- version
- 0.14.0
SKILL.md
Java Functional Programming rules
Identify and apply functional programming principles in Java to improve immutability, expressiveness, and maintainability.
What is covered in this Skill?
- Immutable objects and Records (JEP 395)
- Pure functions free of side effects
- Functional interfaces:
Function,Predicate,Consumer,Supplier, custom@FunctionalInterface - Lambda expressions and method references
- Stream API: filter/map/reduce pipelines, parallel streams,
toUnmodifiable*collectors Optionalidiomatic usage:map/flatMap/filter/orElse*overisPresent()+get()- Function composition:
andThen/compose - Higher-order functions: memoization, currying, partial application
- Pattern Matching for
instanceofandswitch(Java 21) - Sealed classes and interfaces (Java 17) for exhaustive domain hierarchies
- Switch Expressions (Java 14), Stream Gatherers (JEP 461)
- Effect-boundary separation: side effects at edges, pure core logic
- Immutable collections:
List.of(),Collectors.toUnmodifiableList()
Scope: The reference is organized by examples (good/bad code patterns) for each core area. Apply recommendations based on applicable examples.
Constraints
Before applying any functional programming changes, ensure the project compiles. If compilation fails, stop immediately — do not proceed until the project compiles successfully. Verify that maven-compiler-plugin source/target supports the Java features being used.
- MANDATORY: Run
./mvnw compileormvn compilebefore applying any changes - SAFETY: If compilation fails, stop immediately — do not proceed until the project compiles successfully
- VERIFY: Verify maven-compiler-plugin source/target supports the Java features being used
- VERIFY: Run
./mvnw clean verifyormvn clean verifyafter applying improvements - BEFORE APPLYING: Read the reference for detailed good/bad examples, constraints, and safeguards for each functional programming pattern
When to use this skill
- Improve the code with Functional Programming
- Apply Functional Programming
- Refactor the code with Functional Programming
Reference
For detailed guidance, examples, and constraints, see references/142-java-functional-programming.md.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
513-frameworks-micronaut-db-migrations-flyway
Use when you need to add or review Flyway database migrations in a Micronaut application — micronaut-flyway, db/migration scripts, flyway.datasources.* configuration, and alignment with JDBC or Micronaut Data. Part of the skills-for-java project
014-agile-user-story
Guides the creation of agile user stories and Gherkin feature files. Use when the user wants to create a user story, write acceptance criteria, define Gherkin scenarios, or author BDD feature files. Part of the skills-for-java project
502-frameworks-micronaut-rest
Use when you need to design, review, or improve REST APIs with Micronaut — including @Controller routes, HTTP status codes, DTOs, Bean Validation, exception handlers, pagination, idempotency, ETag/If-Match, caching headers, versioning, contract-first OpenAPI (OpenAPI Generator), optional runtime OpenAPI via micronaut-openapi, and security annotations. Part of the skills-for-java project
114-java-maven-search
Covers Maven Central search (Search API, maven-metadata.xml, artifact URLs) and project-local update reports via versions-maven-plugin (display-property-updates, display-dependency-updates, display-plugin-updates). Use when finding or verifying coordinates, browsing Central, or checking what newer versions apply to the user’s pom.xml. Part of the skills-for-java project
323-frameworks-spring-boot-testing-acceptance-tests
Use when you need to implement acceptance tests from a Gherkin .feature file for Spring Boot applications — including finding scenarios tagged @acceptance, implementing happy path tests with TestRestTemplate, @SpringBootTest, Testcontainers with @ServiceConnection for DB/Kafka, and WireMock for external REST stubs. Requires .feature file in context. Part of the skills-for-java project
200-agents-md
Use when you need to generate an AGENTS.md file for a Java repository — covering project conventions, tech stack, file structure, commands, Git workflow, and contributor boundaries — through a modular, step-based interactive process that adapts to your specific project needs. Part of the skills-for-java project
Didn't find tool you were looking for?