首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dart --如何在子类的构造函数中调用超类的工厂构造函数?

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

Stack Overflow用户
提问于 2021-01-31 15:01:00
回答 1查看 1K关注 0票数 2

我想做以下几件事。

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-31 16:12:21

据我所知,不能从子类调用工厂构造函数。例如,工厂构造函数可以返回一个单例。

相反,创建一个私有构造函数MySuperClass._internal,并在您的factory构造函数和子类中使用它。

代码语言:javascript
复制
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());
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65980571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档