본문 바로가기
JAVA

코드가 우아해진다! Java 21 Record와 패턴 매칭(Pattern Matching) 완벽 가이드

by 공부 안하고 싶은 사람 2026. 3. 26.
반응형
Java Modernization Series 02

Lombok은 이제 안녕,
Record & Pattern Matching의 시대

 

안녕하세요, code-resting입니다. 어제는 Java 21의 성능 혁명인 가상 스레드를 다뤘는데요. 오늘은 개발자의 생산성과 코드의 가독성을 극대화해주는 문법적 변화를 살펴보려 합니다. 더 이상 데이터 전달 객체(DTO)를 만들기 위해 수십 줄의 코드를 쓰거나, 복잡한 타입 체크 로직으로 고생할 필요가 없습니다.

1. 데이터의 본질에 집중하는 Record

레코드(Record)는 불변(Immutable) 데이터를 저장하기 위한 특수한 클래스입니다. 필드 선언만으로 생성자, Getter, equals, hashCode, toString을 자동으로 생성합니다.

❌ 기존 방식 (Lombok 사용)

@Value
public class UserDto {
    String name;
    int age;
}

✅ Java 21 Record

public record UserRecord(
    String name, 
    int age
) {}

별도의 라이브러리 없이도 불변성이 보장되며, 쿼리 파라미터나 API 응답용 DTO로 사용하기에 최적입니다.

2. switch문의 진화: 패턴 매칭

Java 21의 가장 강력한 무기는 switch 문에서의 패턴 매칭입니다. 이제 타입 체크와 형변환을 동시에 수행하며, 복잡한 조건문도 선언적으로 작성할 수 있습니다.

String result = switch (obj) {
    case Integer i -> "숫자: " + i;
    case String s when s.length() > 5 -> "긴 문자열: " + s;
    case UserRecord(String name, int age) -> "사용자: " + name;
    default -> "알 수 없음";
};

위 코드처럼 Record Destructuring(레코드 구조 분해)을 통해 내부 필드에 즉시 접근할 수도 있습니다.

3. Sealed Classes와의 시너지

상속받을 수 있는 하위 클래스를 명시적으로 제한하는 Sealed Class를 패턴 매칭과 함께 사용하면, default 케이스 없이도 모든 상황에 대응하는 안전한 코드를 짤 수 있습니다.

💡 마무리하며

Java 21은 단순히 버전 숫자가 올라간 것이 아니라, 모던 자바로 향하는 완결판과 같습니다. Record로 데이터를 정의하고, 패턴 매칭으로 로직을 처리하는 흐름은 코드 양을 줄여줄 뿐만 아니라 버그가 끼어들 틈을 획기적으로 차단합니다. 2026년의 프로젝트라면, 이제 구식 문법은 과감히 버릴 때입니다.

© 2026 code-resting. All rights reserved.

반응형

댓글