Record — 레코드 클래스의 공통 기본 클래스

Record — 레코드 클래스의 공통 기본 클래스

Record는 모든 자바 언어 레코드 클래스(record class)의 공통 기본 클래스예요. 레코드에 대한 자세한 정보(컴파일러가 합성한 암묵적으로 선언된 메서드 포함)는 자바 언어 명세(JLS) 8.10절에서 확인할 수 있어요. 레코드 클래스는 레코드 컴포넌트(record component)라 불리는 고정된 값 집합에 대한 얕은 불변(shallowly immutable) 투명 전달자예요. 레코드 헤더에 선언된 컴포넌트 목록이 레코드 디스크립터(record descriptor)를 형성해요. 레코드 클래스는 다음 필수 멤버를 가져요: 표준 생성자(canonical constructor), 각 컴포넌트에 대응하는 private final 필드, 각 컴포넌트에 대응하는 공개 접근자(accessor) 메서드. 이 멤버들이 레코드 본문에 명시적으로 선언되지 않으면 암묵적 구현이 제공돼요.

출처: Java API Reference

본문

protected Record() — 레코드 클래스가 호출할 생성자예요.

public abstract boolean equals(Object obj) — 다른 객체가 이 레코드와 "같은지" 여부를 나타내요. Object.equals의 일반 계약에 더해, 레코드 클래스는 레코드 인스턴스가 "복사"되더라도 동등성이 유지되어야 한다는 불변식을 지켜야 해요. 즉 모든 컴포넌트가 동일하면 두 레코드가 같다고 간주돼요.

public abstract int hashCode() — 레코드의 해시 코드 값을 반환해요. Object.hashCode의 일반 계약을 따르며, Record.equals의 정제된 계약에 따라 해싱 동작이 제약돼요. 어떤 두 레코드가 동일하면 같은 해시 코드를 가져야 해요.

public abstract String toString() — 레코드의 문자열 표현을 반환해요. Object.toString()의 일반 계약에 따라 "텍스트로 표현하는" 문자열을 반환해요. 결과에는 각 컴포넌트의 이름과 값이 포함되는 것이 일반적이에요.

더 알아보기 (Learn more)