기본 생성자는 리다이렉팅 생성자가 될 수 없음
기본 생성자는 리다이렉팅 생성자가 될 수 없음 (primary_constructor_cannot_redirect)
이 문서는 Dart 분석기(analyzer)가 만들어 내는 primary_constructor_cannot_redirect 진단(diagnostic)에 대한 상세한 내용을 설명하는 문서예요. 기본 생성자(primary constructor)가 다른 생성자로 리다이렉트(redirect)할 때 분석기가 이 진단을 알려 줘요. 어떤 상황에서 발생하고 어떻게 고치는지 함께 알아볼게요.
본문
진단 메시지
A primary constructor can't be a redirecting constructor.
기본 생성자는 리다이렉팅 생성자(redirecting constructor)가 될 수 없어요.
설명
분석기는 기본 생성자가 다른 생성자로 리다이렉트할 때 이 진단을 만들어 내요.
예시
다음 코드는 기본 생성자가 생성자 C.named로 리다이렉트하기 때문에 이 진단을 만들어 내요.
class C(int x) {
C.named() : this(0);
this : assert(x > 0), this.named();
}
일반적인 해결 방법
리다이렉션이 꼭 필요하지 않다면, 그 부분을 제거해 주세요.
class C(int x) {
new named() : this(0);
this : assert(x > 0);
}
리다이렉션이 꼭 필요하다면, 기본 생성자를 클래스 본문 안의 일반 생성자(in-body constructor)로 바꾸고, 다른 생성자들도 필요에 따라 함께 수정해 주세요.
class C {
new named();
new(int x) : this.named();
}
더 알아보기
- Dart 분석기 진단 목록에서 다른 진단들도 함께 살펴보세요.
- Dart의 생성자와 리다이렉팅 생성자에 대한 더 자세한 내용은 Dart 언어 투어 (Language tour)의 생성자(Constructors) 부분을 참고해요.