생성자(generative constructor)가 필요한 자리에 factory 가 발견됐어요
생성자(generative constructor)가 필요한 자리에 factory 가 발견됐어요
생성자의 초기화 리스트(initializer list)가 상위 클래스의 생성자를 호출했는데, 그 호출 대상이 factory 생성자일 때 분석기가 알려주는 진단이에요.
본문
생성자의 초기화 리스트가 상위 클래스의 생성자를 호출하는데, 그 호출된 생성자가 factory 생성자일 때 이 진단이 발생해요. 초기화 리스트에서는 생성자(generative constructor)만 호출할 수 있어요.
아래 코드는 super.one() 호출이 factory 생성자를 호출하기 때문에 이 진단이 나와요.
class A {
factory A.one() = B;
A.two();
}
class B extends A {
B() : super.one();
}
고치는 방법
super 호출이 생성자(generative constructor)를 호출하도록 바꿔 주면 돼요.
class A {
factory A.one() = B;
A.two();
}
class B extends A {
B() : super.two();
}
만약 생성자가 이름 없는 생성자(unnamed constructor)이고, 전달하는 인자도 없다면 super 호출 자체를 제거해도 돼요.
더 알아보기
- 생성자와 factory 생성자에 대한 자세한 내용은 Dart 공식 문서의 constructors 자료를 참고해요.