PHpullh
학습 라이브러리/Java/record 심화 — 커스텀과 제약

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 ).