[강의] Java Record

Jerry·2025년 7월 10일

Topic

레코드(Record)

What I Learned

레코드(Record)

정의

  • 불변 데이터 객체(Value Object)를 간단하게 선언할 수 있도록 지원하는 Java의 특별한 클래스 타입 (Java 16+)
  • equals(), hashCode(), toString() 등이 자동 생성되고 모든 필드는 final이며 생성자도 자동 생성됨
  • 주로 VO(Value Object) Type 용도로 사용됨
  • 기존에는 Lombok을 통해 자동 생성하던 기능을 Java 문법으로 가져왔고 점차 확대 중
public record Person(String name, int age) {}

Person p = new Person("Hong", 30);

System.out.println(p.name()); // "Hong"
System.out.println(p.age()); // 30
System.out.println(p); // Person[name=Hong, age=30]

레코드 선언 시 생성되는 기능

  • Field 모든 필드는 private final로 선언됨
  • Constructor 모든 필드를 인자로 받는 Canonical 생성자 생성
  • getter 메소드 각 필드명과 동일한 이름의 getter 생성
  • toString() 필드 값을 포함한 문자열 반환
  • equals() 필드 값을 기준으로 동등성 비교 수행
  • hashCode() 모든 필드를 기준으로 해시코드 생성
  • 상속 구조: java.lang.Record를 상속, final 클래스가 됨
  • 필드 수정자: 불가능
  • 인터페이스 구현(implements): 가능
profile
Backend engineer

0개의 댓글