스크린샷 2024-10-29 오후 10.07.02.png

Java의 레코드 클래스(Record Class)는 데이터를 저장하고 전달하는 목적으로 사용되는 간결한 구조의 클래스입니다. Java 14에서 처음 도입되었고, Java 16에서 정식으로 추가되었습니다. 레코드는 기본적으로 불변성을 가지며, 주로 DTO와 같이 데이터 전달용 객체를 간단하게 정의할 때 유용합니다.

1. 레코드(Record) 선언

public record RaceRequest(String command, int iterations, RacingCarList racingCarList)는 Java 레코드 선언입니다. 레코드는 주어진 필드(command, iterations, racingCarList)를 기반으로 기본 생성자와 getter 메서드를 자동 생성합니다.

2. 생성자 오버로딩

java
코드 복사
public RaceRequest(String command, Integer iterations) {
    this(command, iterations, new RacingCarList());
}

위 부분은 생성자 오버로딩을 사용하여 racingCarList 없이 commanditerations만으로 RaceRequest 객체를 생성할 수 있도록 해줍니다. this(command, iterations, new RacingCarList());로 기본값을 new RacingCarList()로 설정하여 racingCarList 필드에 초기값을 전달합니다.

3. 복사 메서드 패턴

java
코드 복사
public RaceRequest withCarList(RacingCarList racingCarList) {
    return new RaceRequest(this.command, this.iterations, racingCarList);
}

이 부분은 복사 메서드 패턴입니다. 레코드는 불변이기 때문에 필드 값을 변경할 수 없습니다. 따라서 기존 객체의 필드는 그대로 유지하면서 racingCarList 필드만 변경된 새로운 RaceRequest 객체를 생성합니다.

전체적인 동작 요약

레코드 클래스의 특징

  1. 자동 생성된 필드, 생성자, getter, equals, hashCode, toString:
  2. 불변성: