factory 생성자 이름은 둘러싼 클래스 이름과 같아야 해요
factory 생성자 이름은 둘러싼 클래스 이름과 같아야 해요
factory 생성자의 이름이 바로 바깥에 있는 클래스의 이름과 같지 않을 때 Dart analyzer가 만들어 내는 진단이에요. 이름 규칙이 어긋났을 때 잡아 주는 거죠.
본문
이 진단은 factory 생성자의 이름이 둘러싸고 있는 클래스의 이름과 같지 않을 때 발생해요.
아래 코드는 factory 생성자의 이름이 A인데 둘러싼 클래스 이름이 C라서 이 진단을 만들어 내요.
// @dart = 3.12
class A {}
class C {
factory A() => throw 0;
}
고치는 방법
상황에 따라 여러 가지로 고칠 수 있어요.
factory가 둘러싼 클래스의 인스턴스를 반환하고 있고, 이름 없는(unnamed) factory 생성자로 쓰려는 거라면 이름을 바꿔 주면 돼요.
class A {}
class C {
factory C() => throw 0;
}
둘러싼 클래스의 인스턴스를 반환하고, 이름 있는(named) factory 생성자로 쓰려는 거라면 factory 생성자 이름 앞에 둘러싼 클래스의 이름을 붙여 주면 돼요.
class A {}
class C {
factory C.a() => throw 0;
}
다른 클래스의 인스턴스를 반환한다면 그 클래스로 factory를 옮겨 주면 돼요.
class A {
factory A() => throw 0;
}
class C {}
다른 클래스의 인스턴스를 반환하는데, 그 클래스를 고칠 수 없거나 factory를 옮기고 싶지 않다면 static 메서드로 바꿔 주면 돼요.
class A {}
class C {
static A a() => throw 0;
}
더 알아보기
- factory 생성자
- named 생성자