간결한 표준 생성자
매개변수 목록을 반복하지 않고 레코드 필드를 검증하고 정규화합니다.
코드 비교
✕ Java 16
public record Person(String name,
List<String> pets) {
// Full canonical constructor
public Person(String name,
List<String> pets) {
Objects.requireNonNull(name);
this.name = name;
this.pets = List.copyOf(pets);
}
}
✓ Java 16+
public record Person(String name,
List<String> pets) {
// Compact constructor
public Person {
Objects.requireNonNull(name);
pets = List.copyOf(pets);
}
}
이 코드에 문제가 있나요? 알려주세요.
모던 방식이 더 나은 이유
반복 감소
매개변수 목록을 반복하거나 각 필드를 수동으로 대입할 필요가 없습니다.
유효성 검사
null 확인, 범위 유효성 검사, 방어적 복사에 완벽합니다.
명확한 의도
간결한 구문이 보일러플레이트가 아닌 유효성 검사를 강조합니다.
이전 방식
명시적 생성자 유효성 검사
모던 방식
간결한 생성자
JDK 버전
16
난이도
중급
JDK 지원
간결한 표준 생성자
사용 가능
JDK 16 (2021년 3월) 이후 널리 사용 가능
동작 원리
레코드는 매개변수 목록과 필드 대입을 생략하는 간결한 표준 생성자를 선언할 수 있습니다. 컴파일러는 유효성 검사 로직 실행 후 자동으로 매개변수를 필드에 대입합니다. 전제 조건 확인, 방어적 복사에 이상적입니다.
관련 문서