Record는 자바의 불변(immutable) 데이터 객체를 쉽게 생성할 수 있도록 하는 새로운 유형의 클래스다.
AS-IS 불변 객체
@Getter
@RequiredArgsConstructor
public final class Test {
private final int test1;
private final String test2;
}
TO-BE 불변 객체
public record Test (int test1, String test2) {}
레코드 클래스를 사용하면 훨씬 더 간결한 방식으로 불변 데이터 객체를 정의할 수 있다.
레코드는 암묵적으로 final class (상속 불가)고, abstract로 추상화 객체도 선언이 불가하다.
(public record == public final class // true)
다른 클래스를 상속 받을수도 없지만, interface 구현(implements)는 가능하다
final class기에 또한 AOP를 사용할 수 없다. (참고: https://velog.io/@goldfrosch/aop-and-oop#proxy)