Dart中能否为TypeA变量显式指定正确类型替代var?
解决方案
直接将类对象赋值给变量时,Dart会将其类型推断为Type,而Type类型无法被调用实例化。要解决这个问题,你需要明确引用类的构造函数,并为变量指定对应的函数类型:
class A{ int i = 1; A(this.i); } A instance = A(1); // 显式指定类型为「接受int参数、返回A实例」的函数 A Function(int) TypeA = A.new; // 调用时传入构造函数所需的int参数 A secondInstanceOfA = TypeA(1);
关键说明
- Dart中类名
A本身代表的是类的Type对象,而非构造函数引用;要获取默认构造函数的引用,需使用A.new。 - 显式指定
TypeA的类型为A Function(int),完全匹配A类默认构造函数的签名(接收一个int参数,返回A实例),这样编译和运行时都不会报错。
内容的提问来源于stack exchange,提问作者Александр
相关产品推荐
相关产品推荐

