5 dart
我想做如下的事情。
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
}
Run Code Online (Sandbox Code Playgroud)
我将如何调用超类的工厂构造函数?
给出的错误是:
The constructor 'MySuperClass MySuperClass.from(int a)' is a factory constructor, but must be a generative constructor to be a valid superinitializer
据我所知,您不能从子类调用工厂构造函数。例如,工厂构造函数可以返回一个单例。
相反,创建一个私有构造函数并在构造函数和子类中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());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2436 次 |
| 最近记录: |