데이터를 저장하기 위한 불변한 데이터 클래스를 정의하는데 사용되는 새로운 클래스 유형이다.
레코드는 record 키워드를 사용해 선언된다. 클래스와 비슷하게 필드를 선언한다. 각 필드는 자동으로 private final 필드로 간주되며, 자동으로 getter 메서드가 생성된다.
public record Person(String name, int age) {}
Person person = new Person("Alice", 30);
// person.name = "Bob"; // 컴파일 에러: 레코드의 필드는 변경할 수 없음
레코드의 필드는 자동으로 private final로 선언되기 때문에 필드 값을 변경할 수 없다. 즉, 레코드의 필드는 한 번 설정되면 재할당이 불가능하며, 이를 통해 레코드 객체는 불변성을 갖게된다.
그래서 setter 메소드는 제공되지 않는다.