Record는 enum과 같은 특별한 형태의 class
extends를 지원하지 않음 (자동으로 final로 상속 불가능)
Record == class + (생성자, getter, hashCode(), equals(), toString()) + custom
record는 불변 객체로 DTO나 VO같은 단순한 데이터 구조로 주로 사용됨
@Builder
public record Tokens(String accessToken, String refreshToken) { }
위 record를 class로 변환하면 아래와 같음
(단, 불변이라는 의미에서는 벗어남)
@Getter
@ToString
public class Tokens {
private final String accessToken;
private final String refreshToken;
@Builder
public Tokens(String accessToken, String refreshToken) {
this.accessToken = accessToken;
this.refreshToken = refreshToken;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Tokens tokens = (Tokens) o;
return Objects.equals(accessToken, tokens.accessToken) &&
Objects.equals(refreshToken, tokens.refreshToken);
}
@Override
public int hashCode() {
return Objects.hash(accessToken, refreshToken);
}
}