| name | java-patterns |
| description | This skill should be used for Java/Spring patterns, dependency injection, streams, Optional, Kotlin, Spring Boot, Maven, Gradle, JVM backend |
| whenToUse | Java code, Spring Boot, JUnit, Kotlin, .java files, .kt files, Maven, Gradle, JVM backend, Spring framework, Jakarta EE |
| whenNotToUse | Non-JVM code, Android-specific (use Android docs) |
| seeAlso | [object Object], [object Object], [object Object] |
Java Patterns
Idiomatic Java/Spring patterns for Java 17+.
Records
public record User(String name, String email) {}
Optional
Optional.ofNullable(user)
.map(User::getEmail)
.orElse("default@example.com");
Streams
List<String> names = users.stream()
.filter(u -> u.isActive())
.map(User::getName)
.collect(Collectors.toList());
Spring Dependency Injection
@Service
public class UserService {
private final UserRepository repo;
public UserService(UserRepository repo) {
this.repo = repo;
}
}
JUnit 5
@Test
void shouldReturnUser() {
User user = service.findById(1L);
assertThat(user.getName()).isEqualTo("test");
}
@ParameterizedTest
@ValueSource(strings = {"a", "b", "c"})
void shouldValidate(String input) {
assertTrue(validator.isValid(input));
}