JAVA · 객체지향
record 심화 — 커스텀과 제약
record의 커스텀 생성자, 메서드, 제약사항을 알아봅니다.
객체지향중급record컴팩트생성자불변Java16
핵심 설명
record의 커스텀 생성자, 메서드, 제약사항을 알아봅니다.
Java code
// 기본 record
record Point(int x, int y) {
// 컴팩트 생성자 — 유효성 검사
Point {
if (x < 0 || y < 0) {
throw new IllegalArgumentException("음수 불가");
}
}
// 커스텀 생성자
Point(int xy) {
this(xy, xy); // 정규 생성자 호출 필수
}
// 추가 메서드
double distanceTo(Point other) {
int dx = this.x - other.x;
int dy = this.y - other.y;
return Math.sqrt(dx * dx + dy * dy);
}
// static 메서드
static Point origin() { return new Point(0, 0); }
}
// 제네릭 record
record Pair<A, B>(A first, B second) {}
// 인터페이스 구현
record Range(int start, int end) implements Comparable<Range> {
Range { if (start > end) throw new IllegalArgumentException(); }
@Override
public int compareTo(Range o) {
return Integer.compare(this.start, o.start);
}
}학습 팁
컴팩트 생성자에서 필드 할당은 자동으로 수행됩니다. 유효성 검사만 작성하세요. this.x = x;를 직접 쓰면 에러입니다.
주의할 점
record의 필드는 final입니다. setter를 만들 수 없고, 상속도 불가능합니다(암묵적 final).
자주 묻는 질문
record 심화 — 커스텀과 제약란 무엇인가요?
record의 커스텀 생성자, 메서드, 제약사항을 알아봅니다.
record 심화 — 커스텀과 제약 학습 시 주의할 점은 무엇인가요?
record의 필드는 final 입니다. setter를 만들 수 없고, 상속도 불가능합니다(암묵적 final ).
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.