리다이렉팅 생성자에서 super 초기화 사용

리다이렉팅 생성자에서 super 초기화 사용

Dart 분석기(analyzer)가 만들어 내는 이 진단은, 다른 생성자로 리다이렉트하는 생성자가 슈퍼클래스의 생성자까지 호출하려고 할 때 알려줘요. 리다이렉트 생성자는 슈퍼 생성자를 직접 부를 수 없거든요.

출처: super_in_redirecting_constructor

본문

진단 메시지는 "The redirecting constructor can't have a 'super' initializer." 즉 "리다이렉팅 생성자는 'super' 초기화를 가질 수 없어요."라는 뜻이에요.

설명

다른 생성자로 리다이렉트하는 생성자가 슈퍼클래스의 생성자도 호출하려고 하면 이 진단이 나와요. 슈퍼클래스 생성자는 리다이렉트 대상인 생성자가 호출될 때 함께 호출되거든요.

예시

다음 코드는 생성자 C.aC.b로 리다이렉트하면서 동시에 슈퍼클래스의 생성자도 호출해서 이 진단이 나와요:

class C {
  C.a() : this.b(), super();
  C.b();
}

해결 방법

super 생성자 호출을 제거하면 돼요:

class C {
  C.a() : this.b();
  C.b();
}

더 알아보기