데이터 클래스를 위한 레코드
한 줄이 불변 데이터 운반자를 위한 30줄 이상의 보일러플레이트를 대체합니다.
코드 비교
✕ Java 8
public class Point {
private final int x, y;
public Point(int x, int y) { ... }
public int getX() { return x; }
public int getY() { return y; }
// equals, hashCode, toString
}
✓ Java 16+
public record Point(int x, int y) {}
이 코드에 문제가 있나요? 알려주세요.
모던 방식이 더 나은 이유
한 줄 정의
한 줄이 생성자, 게터, equals, hashCode, toString을 대체합니다.
기본적으로 불변
모든 필드는 final입니다 — 세터로 인한 위험이 없습니다.
패턴 친화적
레코드는 switch와 instanceof의 구조 분해 패턴과 함께 작동합니다.
이전 방식
장황한 POJO
모던 방식
record
JDK 버전
16
난이도
초급
JDK 지원
데이터 클래스를 위한 레코드
사용 가능
JDK 16 (2021년 3월) 이후 널리 사용 가능
동작 원리
레코드는 생성자, 접근자(x(), y()), equals(), hashCode(), toString()을 자동으로 생성합니다. 설계상 불변이며 DTO, 값 객체, 패턴 매칭에 이상적입니다.
관련 문서