record는 구성 요소에서 값 객체 계약을 함께 만든다

record가 생성 코드를 줄여도 구성 요소가 가변이면 깊은 불변성까지 자동으로 생기지는 않습니다.

record valuecomponents define identity

canonical constructor

검증·정규화

component accessors

title()·viewCount()

equals/hashCode

모든 구성 요소 값

toString

구조화된 표현

shallow final

참조 대상 변경은 별도 차단

핵심: 값 동등성과 읽기 전용 참조는 제공되지만 mutable 구성 요소는 생성 경계에서 snapshot으로 바꿉니다.