리다이렉팅 생성자에서 super 초기화 사용
리다이렉팅 생성자에서 super 초기화 사용
Dart 분석기(analyzer)가 만들어 내는 이 진단은, 다른 생성자로 리다이렉트하는 생성자가 슈퍼클래스의 생성자까지 호출하려고 할 때 알려줘요. 리다이렉트 생성자는 슈퍼 생성자를 직접 부를 수 없거든요.
본문
진단 메시지는 "The redirecting constructor can't have a 'super' initializer." 즉 "리다이렉팅 생성자는 'super' 초기화를 가질 수 없어요."라는 뜻이에요.
설명
다른 생성자로 리다이렉트하는 생성자가 슈퍼클래스의 생성자도 호출하려고 하면 이 진단이 나와요. 슈퍼클래스 생성자는 리다이렉트 대상인 생성자가 호출될 때 함께 호출되거든요.
예시
다음 코드는 생성자 C.a가 C.b로 리다이렉트하면서 동시에 슈퍼클래스의 생성자도 호출해서 이 진단이 나와요:
class C {
C.a() : this.b(), super();
C.b();
}
해결 방법
super 생성자 호출을 제거하면 돼요:
class C {
C.a() : this.b();
C.b();
}