record class에 대해 알아보던 중 Compact Constructor에 대한 존재를 알게되었다.
record의 생성자가 클래스의 private 필드를 초기화하는 것보다 더 많은 행동을 하기를 원할 때 생성자를 커스텀할 수 있다. 이 때 Class Constructor와는 다르게 Compact Constructor는 일반적인 형식보다 더 간략하게 적을 수 있다.
간단한 예시를 알아보자.
public RecordCarsDto { // 매개변수를 받는 부분이 생략됨
if (Objects.isNull(values)) {
values = new ArrayList<>();
}
if (Objects.isNull(speed)) {
speed = 10;
}
// this.values = values; this.speed = speed; 와 같은 초기화 로직은 마지막에 자동으로 호출해줌.
}
아무래도 record 이외에서는 사용이 안되는 듯하다.
되더라도 잘 사용하지 않는 듯하다.