class_used_as_mixin_declares_generative_constructor 진단: 생성자를 가진 클래스를 믹스인으로 사용할 때

class_used_as_mixin_declares_generative_constructor 진단: 생성자를 가진 클래스를 믹스인으로 사용할 때

클래스를 믹스인으로 사용할 때, 그 클래스가 generative 생성자(generative constructor)를 정의하면 안 돼요. 그런데 믹스인으로 쓰이는 클래스가 generative 생성자를 정의하고 있으면, Dart 분석기가 class_used_as_mixin_declares_generative_constructor 진단을 알려줘요.

출처: class_used_as_mixin_declares_generative_constructor

본문

설명

분석기는 클래스가 믹스인으로 사용되고, 그 믹스인으로 쓰이는 클래스가 generative 생성자를 정의할 때 이 진단을 만들어요.

예시

다음 코드는 클래스 A가 generative 생성자를 정의하면서 믹스인으로 사용되기 때문에 이 진단을 만들어요.

//@dart=2.19
class A {
  A();
}

class B with A {}

흔한 해결 방법

클래스를 mixin으로 변환할 수 있다면, 그렇게 해요.

mixin A {}

class B with A {}

클래스가 mixin이 될 수 없고 생성자를 제거할 수 있다면, 그렇게 해요.

//@dart=2.19
class A {}

class B with A {}

클래스가 mixin이 될 수도 없고 생성자를 제거할 수도 없다면, 믹스인 대신 클래스를 extend하거나 implement해 봐요.

class A {
  A();
}

class B extends A {}

더 알아보기