레코드란?
- 불변 데이터 객체를 쉽게 생성할 수 있도록 하는 새로운 유형의 클래스
- 레코드는 암묵적으로 상속할 수 없는 final 클래스다.
- abstract 키워드를 사용할 수 없다.
- 다른 클래스를 상속 받을 수는 없지만, 인터페이스 구현은 가능하다.
- Java 16부터 제공
기존의 불변 데이터 객체 작성 방법
레코드 작성 방법
기존 불변 클래스와 레코드의 작성법 차이
- 불변 클래스
- 모든 필드에 final을 사용하여 명시적으로 정의
- 필드 값을 모두 포함한 생성자
- 모든 필드에 대한 접근자 메서드
- 상속을 방지하기 위해 클래스 자체를 final로 선언
- 로깅 출력을 제공하기 위한 toString 재정의
- 두 개의 인스턴스를 비교하기 위한 hashCode, equals 재정의
- 레코드
- 컴파일러는 헤더를 통해 내부 필드를 추론
- 생성자를 작성하지 않아도 되고 toString, equals, hashCode 메소드를 자동으로 구현
레코드 사용 예시