Dart-如何在子类的构造函数中调用超类的工厂构造函数?

zmunk

我想做类似以下的事情。

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

Shubhamhackz

据我所知,您不能从子类中调用工厂构造函数,因为工厂构造函数用于使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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章