Generics Dart泛型:";名称T是';“一个班级”;尝试创建T的实例时

Generics Dart泛型:";名称T是';“一个班级”;尝试创建T的实例时,generics,dart,Generics,Dart,我有一个通用的“容器”,除其他外,它需要能够创建其“类型参数”的实例: 但这并不理想,因为我需要在BaseContainer的每个子类中定义这个方法 有没有一种方法可以在泛型超类中使用“泛型”makeNew方法?你的意思是如何实例化一个类型参数?@AndreyIlyunin:我的理解是,类型参数将被一个具有构造函数的具体类“替换”。我甚至会说,因此,我可以在T的实例上调用Item的方法,因此我希望构造也能起到同样的作用。构造函数不是继承的。假设您有两个来自Item的interitor:class

我有一个通用的“容器”,除其他外,它需要能够创建其“类型参数”的实例:

但这并不理想,因为我需要在
BaseContainer
的每个子类中定义这个方法


有没有一种方法可以在泛型超类中使用“泛型”
makeNew
方法?

你的意思是如何实例化一个类型参数?@AndreyIlyunin:我的理解是,类型参数将被一个具有构造函数的具体类“替换”。我甚至会说
,因此,我可以在
T
的实例上调用
Item
的方法,因此我希望构造也能起到同样的作用。构造函数不是继承的。假设您有两个来自
Item
的interitor:classes
ClassA
ClassB
。它们分别需要
ServiceA
ServiceB
类型的实例,并且它们在它们声明的唯一构造函数中接收它们。因此,没有办法安全地实例化一个可以从这个泛型声明创建的类型(我在C++中没有经验,但这就是模板在这里工作的方式)。因此,考虑到DART,java、Kotlin和其他几种流行语言既不创建类型,也不允许使用默认构造函数实例化它:不幸的是,它不是安全的操作,我认为DART泛型在C++方面不象C++模板。
class Item { }

class BaseContainer<T extends Item> {
  T makeNew() {
    return new T() as T; // compile-time error
  }
}
class Container extends BaseContainer<Item> {
  Item makeNew() {
    return new Item(); // works correctly
  }
}