Java 14부터 프리뷰로 도입된 클래스 타입으로 순수하게 데이터를 보유하기 위한 클래스를 말한다. Java 16부터 정식 스펙에 포함된 Record는 class처럼 타입으로 사용이 가능하다
객체를 생성할때 보통 개발자들은 클래스를 만들고 필드 생성 후에 생성자, getter를 구현한다.
public class Person {
private final String name;
private final int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
보통 엔티티나 DTO 구현에 있어서 많이 사용하는 형식이다. 이를 Record 타입클래스로 만들면서 상당히 단순해진다.
public record Person(
String name,
int age
) {}
자동으로 필드를 private final로 선언해서 만들어 주고, 생성자와 getter까지 암묵적으로 생성된다. 또한 equals, hashcode, toString도 자동으로 생성해준다고 하니 매우 편리하다. 대신 getter 메서드 구현시 getXXX()로 명칭을 짓지만 자동으로 만들어주는 메서드는 name(), age()같이 필드명으로 생성된다.