초기화 목록에서 마지막이 아닌 super 생성자 호출
초기화 목록에서 마지막이 아닌 super 생성자 호출
Dart 분석기(analyzer)가 만들어 내는 이 진단은, 생성자의 초기화 목록에서 슈퍼클래스 생성자 호출이 마지막 항목이 아닐 때 알려줘요. super 생성자 호출은 초기화 목록의 맨 끝에 와야 해요.
본문
이 진단은 이전에는 invalid_super_invocation이라고 불렸어요. 진단 메시지는 "The superconstructor call must be last in an initializer list." 즉 "슈퍼 생성자 호출은 초기화 목록에서 마지막이어야 해요."라는 뜻이에요.
설명
생성자의 초기화 목록(initializer list)에 슈퍼클래스 생성자 호출이 포함돼 있는데, 그 호출이 초기화 목록의 마지막 항목이 아니면 이 진단이 나와요.
예시
다음 코드는 슈퍼클래스 생성자 호출이 초기화 목록의 마지막 항목이 아니라서 이 진단이 나와요:
class A {
A(int x);
}
class B extends A {
B(int x) : super(x + 1), assert(x >= 0);
}
해결 방법
슈퍼클래스 생성자 호출을 초기화 목록의 끝으로 옮기면 돼요:
class A {
A(int x);
}
class B extends A {
B(int x) : assert(x >= 0), super(x + 1);
}