Language 중급

super() 또는 this()를 호출하기 전에 값을 검증하고 계산합니다.

✕ Java 8
class Square extends Shape {
    Square(double side) {
        super(side, side);
        // can't validate BEFORE super!
        if (side <= 0)
            throw new IAE("bad");
    }
}
✓ Java 25+
class Square extends Shape {
    Square(double side) {
        if (side <= 0)
            throw new IAE("bad");
        super(side, side);
    }
}
이 코드에 문제가 있나요? 알려주세요.
🛡️

빠른 실패

슈퍼클래스 생성자가 실행되기 전에 인수를 검증합니다.

🧮

먼저 계산

super()를 호출하기 전에 값을 파생하고 데이터를 준비합니다.

🧹

우회 방법 불필요

제한을 우회하기 위한 정적 헬퍼 메서드나 팩토리 패턴이 필요 없습니다.

이전 방식
super() 이후 유효성 검사
모던 방식
super() 이전 코드
JDK 버전
25
난이도
중급
유연한 생성자 본문
사용 가능

JDK 25 LTS에서 확정 (JEP 513, 2025년 9월).

Java 25는 super()가 첫 번째 문장이어야 한다는 제한을 해제합니다. 이제 부모 생성자에 위임하기 전에 인수를 검증하고, 파생 값을 계산하고, 상태를 설정할 수 있습니다.

공유 𝕏 🦋 in