non_redirecting_generative_constructor_with_primary 진단: primary 생성자와 non-redirecting 생성자
non_redirecting_generative_constructor_with_primary 진단: primary 생성자와 non-redirecting 생성자
Dart 분석기가 만들어 내는 non_redirecting_generative_constructor_with_primary 진단에 대한 설명이에요.
본문
primary 생성자를 선언한 클래스에 non-redirecting generative 생성자까지 있을 때 분석기가 이 진단을 만들어요.
설명
클래스가 primary 생성자를 선언하면서 동시에 redirect하지 않는(리다이렉션 없는) generative 생성자도 가지고 있으면 이 진단이 나와요.
예시
다음 코드는 클래스 C가 primary 생성자와 non-redirecting generative 생성자를 둘 다 선언하기 때문에 이 진단을 만들어요.
class C(final String f) {
new c(Object p) : f = p.toString();
}
흔한 해결 방법
generative 생성자가 primary 생성자로 redirect할 수 있다면 그 redirect를 추가해요.
class C(final String f) {
new c(Object p) : this(p.toString());
}
generative 생성자를 primary 생성자를 이용해 인스턴스를 만드는 factory 생성자로 바꿀 수 있다면 factory 생성자로 만들어요.
class C(final String f) {
factory c(Object p) => C(p.toString());
}
그게 아니라면 generative 생성자를 제거하거나, primary 생성자를 본문을 가진 generative 생성자(in-body constructor)로 바꿔요.