我想做类似以下的事情。
class MySuperClass {
final String s;
MySuperClass(this.s);
factory MySuperClass.from(int a) {
return MySuperClass(a.toString());
}
}
class MySubClass extends MySuperClass {
final int b;
MySubClass(int a, this.b) : super.from(a); // error
}
我将如何去调用超类的工厂构造函数?
给出的错误是:
The constructor 'MySuperClass MySuperClass.from(int a)' is a factory constructor, but must be a generative constructor to be a valid superinitializer
据我所知,您不能从子类中调用工厂构造函数,因为工厂构造函数用于使Singleton实例不用于继承。
而是创建一个私有构造函数,MySuperClass._internal
并在构造函数和factory
子类中使用它。
class MySuperClass {
final String s;
MySuperClass._internal(this.s);
factory MySuperClass(int a) {
print('called');
return MySuperClass._internal(a.toString());
}
}
class MySubClass extends MySuperClass {
final int b;
MySubClass(int a, this.b) : super._internal(a.toString());
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句