추상 클래스의 생성자로 리다이렉트할 수 없음

추상 클래스의 생성자로 리다이렉트할 수 없음 (redirect_to_abstract_class_constructor)

이 문서는 Dart 분석기(analyzer)가 만들어 내는 redirect_to_abstract_class_constructor 진단(diagnostic)에 대한 상세한 내용을 설명하는 문서예요. 생성자가 추상 클래스(abstract class)의 생성자로 리다이렉트할 때 분석기가 이 진단을 알려 줘요. 어떤 상황에서 발생하고 어떻게 고치는지 함께 알아볼게요.

출처: redirect_to_abstract_class_constructor

본문

진단 메시지

The redirecting constructor '{0}' can't redirect to a constructor of the abstract class '{1}'.

리다이렉트하는 생성자 '{0}'은(는) 추상 클래스 '{1}'의 생성자로 리다이렉트할 수 없어요.

설명

분석기는 생성자가 추상 클래스의 생성자로 리다이렉트할 때 이 진단을 만들어 내요. 추상 클래스는 직접 인스턴스화할 수 없기 때문에, 그 생성자로 리다이렉트해도 실제 인스턴스를 만들 수 없거든요.

예시

다음 코드는 A의 팩토리(factory) 생성자가 B의 생성자로 리다이렉트하는데, B가 추상 클래스이기 때문에 이 진단을 만들어 내요.

class A {
  factory A() = B;
}

abstract class B implements A {}

일반적인 해결 방법

리다이렉트 대상 생성자가 맞다면, 해당 클래스가 추상 클래스가 아니도록 바꿔 주세요.

class A {
  factory A() = B;
}

class B implements A {}

그렇지 않다면, 팩토리 생성자가 구체 클래스(concrete class)의 생성자로 리다이렉트하거나, 구체적인 구현을 갖도록 바꿔 주세요.

더 알아보기