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 진단을 알려줘요.
본문
설명
분석기는 클래스가 믹스인으로 사용되고, 그 믹스인으로 쓰이는 클래스가 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 {}